1354. Construct Target Array With Multiple Sums
Description
Given an array of integers target
. From a starting array, A
consisting of all 1's, you may perform the following procedure :
let
x
be the sum of all elements currently in your array.choose index
i
, such that0 <= i < target.size
and set the value ofA
at indexi
tox
.You may repeat this procedure as many times as needed.
Return True if it is possible to construct the target
array from A
otherwise return False.
Constraints
N == target.length
1 <= target.length <= 5 * 10^4
1 <= target[i] <= 10^9
Approach
Links
GeeksforGeeks
ProgramCreek
YouTube
Examples
Input: target = [9,3,5]
Output: true
Explanation: Start with [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
Solutions
/**
* Time complexity :
* Space complexity :
*/
class Solution {
public boolean isPossible(int[] target) {
if(target.length == 1) {
return target[0] == 1;
}
PriorityQueue<Integer> pq = new PriorityQueue<>((a, b) -> b -a);
int sum = 0;
for(int n: target) {
sum += n;
pq.add(n);
}
while(pq.peek() != 1) {
int num = pq.poll();
sum -= num;
if(sum < 1 || sum >= num) {
return false;
}
num %= sum;
sum += num;
pq.add(num);
}
return true;
}
}
Follow up
Last updated
Was this helpful?