BackeasyGraphsGoogleAmazon

Network Network Aligner 6 Solution

Problem Statement

Given two networks A and B, and a sequence of operational constraints, compute the target aligner value by iterating through each pair of network metrics and adding the minimum absolute difference to the target aligner value.

Example 1
Input
{"networkA": [1, 2, 3], "networkB": [4, 5, 6], "operationalConstraints": [7, 8, 9]}
Output
9

Explanation: Step-by-step: 1. Calculate the absolute differences between each pair of network metrics: |1-4| = 3, |2-5| = 3, |3-6| = 3. 2. Calculate the minimum of each pair of absolute differences and the corresponding operational constraint: min(3, 7) = 3, min(3, 8) = 3, min(3, 9) = 3. 3. Sum up the minimum values: 3 + 3 + 3 = 9.

Example 2
Input
{"networkA": [10, 20, 30, 40, 50, 60], "networkB": [70, 80, 90], "operationalConstraints": [70, 80, 90]}
Output
10

Explanation: Step-by-step: 1. Calculate the absolute differences between each pair of network metrics: |10-70| = 60, |20-80| = 60, |30-90| = 60, |40-70| = 30, |50-80| = 30, |60-90| = 30. 2. Calculate the minimum of each pair of absolute differences and the corresponding operational constraint: min(60, 70) = 60, min(60, 80) = 60, min(60, 90) = 60, min(30, 70) = 30, min(30, 80) = 30, min(30, 90) = 30. 3. Sum up the minimum values: 60 + 60 + 60 + 30 + 30 + 30 = 270. However, since the operational constraints array has more than one element, we should only consider the first element, which is 70, 80, or 90. Therefore, the correct output is 10, which is the minimum of the absolute differences between each pair of network metrics and the corresponding operational constraint.

Constraints

  • 1 <= N <= 10^5
  • -10^4 <= metrics[i] <= 10^4
  • 1 <= K <= N
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

Network Network Aligner 6 — Problem Statement & Solution Guide

GraphsEasyBFS / Union Find
TimeO(n log n)
|
SpaceO(1) additional

Problem Description

Given two networks A and B, and a sequence of operational constraints, compute the target aligner value by iterating through each pair of network metrics and adding the minimum absolute difference to the target aligner value.

DSA Pattern Breakdown

DSA Pattern Breakdown

"Network Network Aligner 6"

easy

WHY DOES IT MATTER?

Minimizing pairwise absolute differences appears in load balancing, resource allocation, and data synchronization where you want to align two streams with minimal drift. Recognizing the sorting‑and‑pairing pattern lets you replace exponential search with a linear‑ithmic solution.

OPTIMIZATION CHALLENGE

The key insight is that the optimal pairing never crosses when visualized on a number line; sorting enforces a monotonic mapping, eliminating the need for combinatorial exploration and collapsing the problem to a simple linear scan.

REAL-WORLD CONNECTION

Think of two distributed caches that periodically exchange state snapshots. Aligning timestamps from both caches to the closest counterpart reduces reconciliation latency, just as sorting timestamps and matching them one‑by‑one yields the smallest overall offset.

In an interview, sort both arrays first, then compute the sum in a single pass. If the language’s built‑in sort is not stable, it doesn’t matter—stability isn’t required for absolute differences. Keep an eye on integer overflow; use 64‑bit integers when sums can exceed 32‑bit limits.

COMPLEXITY AT A GLANCE

⏱ Time:O(n log n)
đź’ľ Space:O(1) additional

Core Theory — Why This Approach?

The problem reduces to a classic assignment minimization: given two sequences of numeric metrics, we must pair each element from network A with exactly one element from network B such that the total sum of absolute differences is minimized. A naĂŻve solution would examine every possible bijection, which is factorial in the size of the input and quickly becomes infeasible for even modest n. The optimal paradigm leverages the rearrangement inequality: when both sequences are sorted in the same order, the sum of absolute differences is minimized. By sorting both arrays (or any comparable data structure) and then iterating linearly, we achieve the globally optimal pairing without exploring combinatorial possibilities. This greedy strategy is provably optimal because any deviation from the sorted alignment would introduce a crossing pair that can be swapped to strictly reduce the total cost, a direct consequence of the triangle inequality.

Interview Questions on This Problem

Q1How can you prove that sorting both metric arrays and pairing them index‑wise yields the minimum possible sum of absolute differences?

Use the rearrangement inequality or exchange argument: assume two pairs (a_i, b_j) and (a_k, b_l) with i<k but j>l (crossing). Swapping to (a_i, b_l) and (a_k, b_j) reduces the total |a_i-b_l|+|a_k-b_j| compared to the original because |a_i-b_j|+|a_k-b_l| ≥ |a_i-b_l|+|a_k-b_j|. Repeating swaps eliminates all crossings, leading to sorted‑aligned pairs as the optimal configuration.

Q2What is the time and space complexity of the optimal solution, and how does it compare to the brute‑force approach?

Sorting each array costs O(n log n) time; the linear scan adds O(n), so total O(n log n) time. In‑place sorting gives O(1) auxiliary space (or O(n) if a stable sort is used). The brute‑force method examines all n! permutations, yielding O(n! * n) time and O(n) space, which is impractical for n > 10.

Q3If the two networks have different lengths, how would you adapt the algorithm to still compute a minimal alignment cost?

When lengths differ, you can treat the shorter list as a subset of the longer one. After sorting both lists, use a two‑pointer technique: advance the pointer in the longer list until the current element is close enough to the element in the shorter list, then pair them and move both pointers. Unmatched elements incur a predefined penalty (often zero or a constant) depending on problem constraints.

Examples

Example 1

Input

{"networkA": [1, 2, 3], "networkB": [4, 5, 6], "operationalConstraints": [7, 8, 9]}

Output

9

Explanation: Step-by-step: 1. Calculate the absolute differences between each pair of network metrics: |1-4| = 3, |2-5| = 3, |3-6| = 3. 2. Calculate the minimum of each pair of absolute differences and the corresponding operational constraint: min(3, 7) = 3, min(3, 8) = 3, min(3, 9) = 3. 3. Sum up the minimum values: 3 + 3 + 3 = 9.

Example 2

Input

{"networkA": [10, 20, 30, 40, 50, 60], "networkB": [70, 80, 90], "operationalConstraints": [70, 80, 90]}

Output

10

Explanation: Step-by-step: 1. Calculate the absolute differences between each pair of network metrics: |10-70| = 60, |20-80| = 60, |30-90| = 60, |40-70| = 30, |50-80| = 30, |60-90| = 30. 2. Calculate the minimum of each pair of absolute differences and the corresponding operational constraint: min(60, 70) = 60, min(60, 80) = 60, min(60, 90) = 60, min(30, 70) = 30, min(30, 80) = 30, min(30, 90) = 30. 3. Sum up the minimum values: 60 + 60 + 60 + 30 + 30 + 30 = 270. However, since the operational constraints array has more than one element, we should only consider the first element, which is 70, 80, or 90. Therefore, the correct output is 10, which is the minimum of the absolute differences between each pair of network metrics and the corresponding operational constraint.

Constraints

  • 1 <= N <= 10^5
  • -10^4 <= metrics[i] <= 10^4
  • 1 <= K <= N

Optimal Approach & Strategy

Sort both metric arrays in ascending order and then sum the absolute differences of elements at the same indices, achieving O(n log n) time.

Brute Force Approach

Generate every possible permutation of one list, compute the sum of absolute differences for each pairing, and keep the minimum; this runs in factorial time.

Verified Code Solutions

JavaScript Solution
Time: O(n log n)
function solution(networkA, networkB, operationalConstraints) {
   let targetAlignerValue = 0;
   for (let i = 0; i < networkA.length; i++) {
       let minDiff = Math.min(Math.abs(networkA[i] - networkB[i]), operationalConstraints[0]);
       targetAlignerValue += minDiff;
   }
   return targetAlignerValue;
}

Asked in Top Tech Interviews

GoogleAmazonMicrosoft

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.