BackhardDynamic ProgrammingSwiggyMeta

Hyper-Dimensional Grid Architect 3 Solution

Problem Statement

You are tasked with optimizing the signal routing in a hyper-dimensional grid architecture. The system is defined by a sequence of N nodes, where each node i has a specific weight w_i. A valid routing path is a subsequence of nodes (i_1, i_2, ..., i_k) such that i_1 < i_2 < ... < i_k and the absolute difference between the weights of any two consecutive nodes in the path is at most D. The goal is to find the maximum possible sum of weights along such a valid path.

Given the array of weights and the maximum allowed difference D, compute the maximum sum achievable by any valid subsequence. If no valid subsequence exists (which is impossible since a single node is always a valid subsequence of length 1), return the weight of the single node with the maximum value. Note that the subsequence does not need to be contiguous in the original array.

Input: An array of integers representing the node weights and an integer D representing the maximum allowed difference between consecutive weights in the path. Output: An integer representing the maximum sum of weights along a valid subsequence.

Example 1
Input
weights = [1, 2, 3, 4, 5], D = 1
Output
15

Explanation: The valid subsequence is [1, 2, 3, 4, 5]. The differences are |2-1|=1, |3-2|=1, |4-3|=1, |5-4|=1, all <= 1. The sum is 1+2+3+4+5 = 15.

Example 2
Input
weights = [10, 1, 2, 3, 4], D = 1
Output
10

Explanation: The subsequence [1, 2, 3, 4] has sum 10. The subsequence [10] has sum 10. The subsequence [10, 1] is invalid because |1-10|=9 > 1. The maximum sum is 10.

Example 3
Input
weights = [5, 1, 5, 1, 5], D = 4
Output
15

Explanation: The subsequence [5, 1, 5, 1, 5] is valid because |1-5|=4 <= 4, |5-1|=4 <= 4, etc. The sum is 5+1+5+1+5 = 17. Wait, let's re-evaluate. The subsequence [5, 5, 5] is valid (differences 0). Sum = 15. The subsequence [5, 1, 5, 1, 5] has sum 17. Let's check validity: |1-5|=4<=4, |5-1|=4<=4, |1-5|=4<=4, |5-1|=4<=4. So 17 is valid. Let's try another example to be safe. Let's use weights = [1, 10, 2, 11, 3], D = 1. Valid subsequence [1, 2, 3] sum 6. [10, 11] sum 21. Max is 21.

Constraints

  • 1 <= weights.length <= 10^5
  • 1 <= weights[i] <= 10^9
  • 1 <= D <= 10^9
Live Compiler1 Free Run Available
Loading Editor...
Test Cases & Output
Click "Run" to test your 1 free compile trial!

🚀 Practice this problem

Run code, get AI hints & track streak

Sign Up Free

Hyper-Dimensional Grid Architect 3 — Problem Statement & Solution Guide

Dynamic ProgrammingHardDigit DP
TimeO(N log N)
|
SpaceO(N)

Problem Description

You are tasked with optimizing the signal routing in a hyper-dimensional grid architecture. The system is defined by a sequence of N nodes, where each node i has a specific weight w_i. A valid routing path is a subsequence of nodes (i_1, i_2, ..., i_k) such that i_1 < i_2 < ... < i_k and the absolute difference between the weights of any two consecutive nodes in the path is at most D. The goal is to find the maximum possible sum of weights along such a valid path.

Given the array of weights and the maximum allowed difference D, compute the maximum sum achievable by any valid subsequence. If no valid subsequence exists (which is impossible since a single node is always a valid subsequence of length 1), return the weight of the single node with the maximum value. Note that the subsequence does not need to be contiguous in the original array.

Input: An array of integers representing the node weights and an integer D representing the maximum allowed difference between consecutive weights in the path.

Output: An integer representing the maximum sum of weights along a valid subsequence.

DSA Pattern Breakdown

DSA Pattern Breakdown

"Hyper-Dimensional Grid Architect 3"

hard

WHY DOES IT MATTER?

Dynamic programming with range queries transforms an O(N^2) combinatorial search into a logarithmic‑time per element process, making large‑scale data tractable. It also provides a clean, modular structure that can be reused across similar subsequence problems.

OPTIMIZATION CHALLENGE

The bottleneck is the need to find the best predecessor quickly. By compressing weights and using a segment tree to query the maximum dp value in the allowed weight interval, we reduce the inner loop from linear to logarithmic time.

REAL-WORLD CONNECTION

Consider a data center routing packets through servers with latency constraints. Each server’s load (weight) must not differ too much from its neighbor to avoid congestion. The DP models the longest viable routing path, just as the segment tree efficiently tracks optimal sub‑paths.

Always compress the weight domain before building the tree; this keeps the tree shallow and cache‑friendly. Also, iterate indices in order and update the tree immediately after computing dp[i] to avoid stale data.

COMPLEXITY AT A GLANCE

⏱ Time:O(N log N)
đź’ľ Space:O(N)

Core Theory — Why This Approach?

The problem reduces to finding the longest subsequence where each adjacent pair of weights differs by at most D. A naive O(N^2) scan compares every pair of indices, which quickly becomes infeasible for N up to 10^5 or more. The optimal solution uses dynamic programming combined with a range‑maximum query data structure. For each node i, we compute dp[i] = 1 + max{dp[j] | j < i and |w_i - w_j| ≤ D}. If we maintain a balanced binary search tree, Fenwick tree, or segment tree keyed by weight, we can query the maximum dp value among all weights in the interval [w_i - D, w_i + D] in O(log M) time, where M is the number of distinct weights. By processing nodes in increasing index order and updating the structure with dp[i] at weight w_i, we achieve an overall O(N log M) algorithm.

This approach is essentially a constrained Longest Increasing Subsequence (LIS) problem. The key insight is that the constraint depends only on the weight difference, not on the indices, allowing us to decouple the index order from the weight ordering. Coordinate compression of weights reduces the size of the segment tree to at most N, ensuring both time and space remain logarithmic in N. The dynamic programming state captures the optimal solution up to each index, and the range query guarantees we only consider valid predecessors, eliminating the quadratic blow‑up of the brute‑force method.

Interview Questions on This Problem

Q1How would you solve the "Hyper‑Dimensional Grid Architect 3" problem in a production system where N can be 10^6 and D is small?

I would use a segment tree over compressed weights to perform range maximum queries in O(log N) time per node. Because D is small, the query range is narrow, which can be further optimized with a sliding window or two‑pointer technique, but the segment tree guarantees correctness for any D.

Q2A fintech platform asks: "Can you explain how this DP with range queries relates to real‑time fraud detection?"

In fraud detection, each transaction has a risk score (weight). We want the longest chain of transactions where consecutive scores differ by at most D, indicating a subtle escalation. The DP with range queries efficiently finds such chains in streaming data, analogous to monitoring risk over time.

Q3During a startup interview, you’re asked: "What would you do if the weight values are not integers but floating‑point numbers?"

I would first discretize the weights by sorting and mapping each unique value to an integer index. If D is a tolerance, I would convert the inequality to index ranges using binary search on the sorted unique list, then apply the same segment tree DP.

Examples

Example 1

Input

weights = [1, 2, 3, 4, 5], D = 1

Output

15

Explanation: The valid subsequence is [1, 2, 3, 4, 5]. The differences are |2-1|=1, |3-2|=1, |4-3|=1, |5-4|=1, all <= 1. The sum is 1+2+3+4+5 = 15.

Example 2

Input

weights = [10, 1, 2, 3, 4], D = 1

Output

10

Explanation: The subsequence [1, 2, 3, 4] has sum 10. The subsequence [10] has sum 10. The subsequence [10, 1] is invalid because |1-10|=9 > 1. The maximum sum is 10.

Example 3

Input

weights = [5, 1, 5, 1, 5], D = 4

Output

15

Explanation: The subsequence [5, 1, 5, 1, 5] is valid because |1-5|=4 <= 4, |5-1|=4 <= 4, etc. The sum is 5+1+5+1+5 = 17. Wait, let's re-evaluate. The subsequence [5, 5, 5] is valid (differences 0). Sum = 15. The subsequence [5, 1, 5, 1, 5] has sum 17. Let's check validity: |1-5|=4<=4, |5-1|=4<=4, |1-5|=4<=4, |5-1|=4<=4. So 17 is valid. Let's try another example to be safe. Let's use weights = [1, 10, 2, 11, 3], D = 1. Valid subsequence [1, 2, 3] sum 6. [10, 11] sum 21. Max is 21.

Constraints

  • 1 <= weights.length <= 10^5
  • 1 <= weights[i] <= 10^9
  • 1 <= D <= 10^9

Optimal Approach & Strategy

Process nodes in order, maintain a segment tree over compressed weights that stores the best chain length for each weight, and query the maximum in the interval [w-D, w+D] to update the current node in O(log N).

Brute Force Approach

Check every earlier node for each current node, compute the weight difference, and keep the longest valid chain. This takes O(N^2) time and is impractical for large N.

Verified Code Solutions

JavaScript Solution
Time: O(N log N)
function solution(nums) {
   let n = nums.length;
   let dp = new Array(n).fill(0);
   let maxSum = 0;
   for (let i = 0; i < n; i++) {
       let sum = 0;
       for (let j = i; j < n; j++) {
           sum += nums[j];
           maxSum = Math.max(maxSum, sum);
       }
   }
   return maxSum;
}

Asked in Top Tech Interviews

SwiggyMeta

Solve in Interative Editor

Ready to test your code? Open our built-in compiler, run custom test suites, and see detailed complexity analysis reports instantly.