Search

Construct Target Array With Multiple Sums

You are given an array target of n integers. From a starting array arr consisting of n 1's, you may perform the following procedure :

  • let x be the sum of all elements currently in your array.

  • choose index i, such that 0 <= i < n and set the value of arr at index i to x.

  • You may repeat this procedure as many times as needed.

Return true if it is possible to construct the target array from arr, otherwise, return false.


Example 1:

Input: target = [9,3,5]
Output: true
Explanation: Start with arr = [1, 1, 1] 
[1, 1, 1], sum = 3 choose index 1
[1, 3, 1], sum = 5 choose index 2
[1, 3, 5], sum = 9 choose index 0
[9, 3, 5] Done

Example 2:

Input: target = [1,1,1,2]
Output: false
Explanation: Impossible to create target array from [1,1,1,1].

Example 3:

Input: target = [8,5]
Output: true


Constraints:

  • n == target.length

  • 1 <= n <= 5 * 104

  • 1 <= target[i] <= 109

Solution:

class Solution {
    public boolean isPossible(int[] target) {
        PriorityQueue<Integer> queue = new PriorityQueue<>((a,b)-> (b-a));
        long total = 0;
        for(int n:target)
        {
            total+=n;
            queue.add(n);
        }
        while(!queue.isEmpty())
        {
            int a = queue.poll();
            total-=a;
            if(a==1 || total==1)
                return true;
            if(a<total || total==0 || a%total==0) return false;
            a%=total;
            total+=a;
            queue.add(a);
        }
        return true;
    }
}
9 views0 comments

Recent Posts

See All

A string s is called good if there are no two different characters in s that have the same frequency. Given a string s, return the minimum number of characters you need to delete to make s good. The f

The numeric value of a lowercase character is defined as its position (1-indexed) in the alphabet, so the numeric value of a is 1, the numeric value of b is 2, the numeric value of c is 3, and so on.

You are given a string s. We want to partition the string into as many parts as possible so that each letter appears in at most one part. Note that the partition is done so that after concatenating al