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
xbe the sum of all elements currently in your array.choose index
i, such that0 <= i < target.sizeand set the value ofAat indexitox.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.length1 <= target.length <= 5 * 10^41 <= 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
Input: target = [1, 1, 1, 2]
Output: false
Explanation: Impossible to create target array from [1, 1, 1, 1].
Input: target = [8, 5]
Output: true
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?