top of page
Search
Writer's pictureCoding Camp

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;
    }
}
28 views0 comments

Recent Posts

See All

Smallest String With A Given Numeric Value

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...

Partition Labels

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....

Comments


bottom of page