-
Notifications
You must be signed in to change notification settings - Fork 3
/
ConstructTargetArrayWithMultipleSums1354.kt
57 lines (43 loc) · 1.31 KB
/
ConstructTargetArrayWithMultipleSums1354.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package hard
/**
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 that 0 <= i < target.size and set the value of A 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 A otherwise return False.
Example 1:
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
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 <= target.length <= 5 * 10^4
1 <= target[i] <= 10^9
*/
fun isPossible(target: IntArray): Boolean {
var total = 0
var maxIndex=0
target.forEachIndexed { index, num ->
total += num
if (target[maxIndex] > num)
maxIndex = index
}
var diff =total - target[maxIndex]
if(target[maxIndex]==1)
return true
if(diff >target[maxIndex])
return false
target[maxIndex] -= diff
return isPossible(target)
}