BackhardLinked ListGoogleAmazon

Matrix Transaction Resolver 17 Solution

Problem Statement

You are given an integer array nums and an integer k. Compute two values: (1) the sum of all array elements that are strictly greater than k, and (2) the sum of the k largest distinct elements in nums. If the array contains fewer than k distinct values, use all distinct values for the second sum. Return both sums as a pair in the order described.

Example 1
Input
nums = [4, 7, 2, 9, 5], k = 5
Output
greaterSum = 16, largestSum = 20

Explanation: Elements greater than 5 are 7 and 9; their sum is 7+9=16. The distinct values sorted descending are 9,7,5,4,2; the top 5 values are all of them, summing to 9+7+5+4+2=27. However, we need the sum of the k largest distinct elements, where k=5, so we take the first 5 values: 9+7+5+4+2=27. Since the problem asks for the sum of the k largest distinct elements, the correct second sum is 27. (Correction: the earlier output mistakenly listed 20; the accurate sum is 27.)

Example 2
Input
nums = [10, -3, 8, 8, 2], k = 3
Output
greaterSum = 18, largestSum = 26

Explanation: Elements greater than 3 are 10, 8, 8; their sum is 10+8+8=26. Distinct values are 10, 8, 2, -3. The three largest distinct values are 10, 8, 2, giving a sum of 10+8+2=20. Thus, greaterSum = 26 and largestSum = 20.

Example 3
Input
nums = [1, 1, 1, 1], k = 2
Output
greaterSum = 0, largestSum = 1

Explanation: No element exceeds k=2, so greaterSum = 0. The distinct set is {1}. Since there is only one distinct value, the sum of the k largest distinct elements equals 1.

Constraints

  • 1 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9
  • 1 <= k <= nums.length
  • All calculations fit within 64‑bit signed integer range
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

Matrix Transaction Resolver 17 — Problem Statement & Solution Guide

Linked ListHardBFS / Union Find
TimeO(n log k)
|
SpaceO(k)

Problem Description

You are given an integer array nums and an integer k. Compute two values: (1) the sum of all array elements that are strictly greater than k, and (2) the sum of the k largest distinct elements in nums. If the array contains fewer than k distinct values, use all distinct values for the second sum. Return both sums as a pair in the order described.

DSA Pattern Breakdown

DSA Pattern Breakdown

"Matrix Transaction Resolver 17"

hard

WHY DOES IT MATTER?

Top‑k distinct selection is a recurring pattern in ranking, recommendation, and resource allocation problems.

OPTIMIZATION CHALLENGE

The key is to avoid full sorting by maintaining a bounded heap, reducing time from O(n log n) to O(n log k).

REAL-WORLD CONNECTION

Think of a streaming service needing the k most‑watched unique movies each day without storing the entire catalog.

Initialize the hash set first to filter duplicates, then push to the heap only when the value is new, minimizing heap operations.

COMPLEXITY AT A GLANCE

⏱ Time:O(n log k)
💾 Space:O(k)

Core Theory — Why This Approach?

The problem decomposes into two independent aggregations: a linear scan to sum elements exceeding a threshold, and a selection of the k largest distinct values. The latter requires deduplication and efficient retrieval of top‑k items, which is optimally handled by a hash set combined with a min‑heap, avoiding the O(n log n) cost of full sorting. Naïve approaches either scan multiple times, sort the entire array, or repeatedly search for maximums, leading to quadratic or unnecessary log‑linear overhead on large inputs. By leveraging a single pass for the first sum and a bounded heap for the second, we achieve linear‑ithmic time while keeping auxiliary space proportional to k, the only variable that truly influences memory usage.

Interview Questions on This Problem

Q1How would you compute the sum of elements greater than k in a single pass?

Iterate through the array once, adding each element to an accumulator only if it exceeds k. This yields O(n) time and O(1) extra space.

Q2What data structure helps you maintain the k largest distinct values efficiently?

A min‑heap of size at most k, paired with a hash set to enforce distinctness, lets you insert each new distinct value in O(log k) time. When the heap exceeds k, you pop the smallest, preserving the top‑k largest.

Q3How do you handle the case when the array has fewer than k distinct numbers?

After processing, the heap will contain all distinct values, which may be fewer than k. You simply sum whatever is present, as the problem permits using all distinct elements.

Examples

Example 1

Input

nums = [4, 7, 2, 9, 5], k = 5

Output

greaterSum = 16, largestSum = 20

Explanation: Elements greater than 5 are 7 and 9; their sum is 7+9=16. The distinct values sorted descending are 9,7,5,4,2; the top 5 values are all of them, summing to 9+7+5+4+2=27. However, we need the sum of the k largest distinct elements, where k=5, so we take the first 5 values: 9+7+5+4+2=27. Since the problem asks for the sum of the k largest distinct elements, the correct second sum is 27. (Correction: the earlier output mistakenly listed 20; the accurate sum is 27.)

Example 2

Input

nums = [10, -3, 8, 8, 2], k = 3

Output

greaterSum = 18, largestSum = 26

Explanation: Elements greater than 3 are 10, 8, 8; their sum is 10+8+8=26. Distinct values are 10, 8, 2, -3. The three largest distinct values are 10, 8, 2, giving a sum of 10+8+2=20. Thus, greaterSum = 26 and largestSum = 20.

Example 3

Input

nums = [1, 1, 1, 1], k = 2

Output

greaterSum = 0, largestSum = 1

Explanation: No element exceeds k=2, so greaterSum = 0. The distinct set is {1}. Since there is only one distinct value, the sum of the k largest distinct elements equals 1.

Constraints

  • 1 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9
  • 1 <= k <= nums.length
  • All calculations fit within 64‑bit signed integer range

Optimal Approach & Strategy

Use a single pass for the first sum and a hash set + min‑heap of size k for the second, achieving O(n log k) time.

Brute Force Approach

Sort the entire array, then iterate to sum >k and to pick the top‑k distinct values, costing O(n log n) time.

Verified Code Solutions

JavaScript Solution
Time: O(n log k)
function solution(nums, k) {
   nums.sort((a, b) => b - a);
   let sumGreater = 0;
   for (let i = 0; i < nums.length; i++) {
      if (nums[i] > k) {
         sumGreater += nums[i];
      } else {
         break;
      }
   }
   let sumK = 0;
   for (let i = 0; i < k; i++) {
      sumK += nums[i];
   }
   return sumGreater - (sumK - k);
}

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.