FastPrepFastPrep
Problem Brief

Optimizing Box Weights

FULLTIMEOA
See Amazon online assessment and hiring insights

An Amazon Fulfillment Associate has a set of items that need to be packed into two boxes. Given an integer array of the item weights (arr) to be packed, divide the item weights into two subsets, A and B, for packing into the associated boxes, while respecting the following conditions:

  • The intersection of A and B is null.
  • The union of A and B is equal to the original array.
  • The number of elements in subset A is minimal.
  • The sum of A's weights is greater than the sum of B's weights.
  • Return the subset A in increasing order where the sum of A's weights is greater than the sum of B's weights. If more than one subset A exists, return the one with the maximal total weight.

    Function Description

    Complete the function minimalHeaviestSetA in the editor below.

    minimalHeaviestSetA has the following parameter(s):

    • int arr[]: an integer array of the weights of each item in the set

    Returns

    int[]: an integer array with the values of subset A

    1Example 1

    Input
    arr = [5, 3, 2, 4, 1, 2]
    Output
    [4, 5]
    Explanation
    The subset of A that satisfies the conditions is [4, 5]:
  • A is minimal (size 2)
  • Sum(A) = (4 + 5) = 9 > Sum(B) = (1 + 2 + 2 + 3) = 8
  • The intersection of A and B is null and their union is equal to arr.
  • The subset A with the maximal sum is [4, 5].
  • 2Example 2

    Input
    arr = [4, 2, 5, 1, 6]
    Output
    [5, 6]
    Explanation
    The subset of A that satisfies the conditions is [5, 6]:
  • A is minimal (size 2)
  • Sum(A) = (5 + 6) = 11 > Sum(B) = (1 + 2 + 4) = 7
  • Sum(A) = (4 + 6) = 10 > Sum(B) = (1 + 2 + 5) = 8
  • The intersection of A and B is null and their union is equal to arr.
  • The subset A with the maximal sum is [5, 6].
  • 3Example 3

    Input
    arr = [3, 7, 5, 6, 2]
    Output
    [6, 7]
    Explanation
    The 2 subsets in arr that satisfy the conditions for A are [5, 7] and [6, 7]:
  • A is minimal (size 2)
  • Sum(A) = (5 + 7) = 12 > Sum(B) = (2 + 3 + 6) = 11
  • Sum(A) = (6 + 7) = 13 > Sum(B) = (2 + 3 + 5) = 10
  • The intersection of A and B is null and their union is equal to arr.
  • The subset A where the sum of its weight is maximal is [6, 7].
  • Constraints

    Limits and guarantees your solution can rely on.

    • 1 ≤ n ≤ 10^5
    • 1 ≤ arr[i] ≤ 10^4 (where 0 ≤ i < n)
    public int[] minimalHeaviestSetA(int[] arr) {
      // write your code here
    }
    
    Input

    arr

    [5, 3, 2, 4, 1, 2]

    Output

    [4, 5]

    Sign in to submit your solution.