FastPrepFastPrep
Problem Brief

Array Subsets 🐿️ (Frontend)

INTERNOA
See IBM online assessment and hiring insights

Given an integer array, divide the array into 2 subsets A and B while respecting the following conditions:

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

    Function Description

    Complete the function subsetA in the editor.

    subsetA has the following parameter(s):

    • int arr[]: an integer array

    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].
  • Constraints

    Limits and guarantees your solution can rely on.

    • 1 ≤ n ≤ 105
    • 1 ≤ arr[i] ≤ 105 (where 0 ≤ i < n)
    public int[] subsetA(int[] arr) {
        // write your code here
    }
    
    Input

    arr

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

    Output

    [4, 5]

    Sign in to submit your solution.