You are given an integer array coins of length n which represents the n
coins that you own. The value of the ith coin is coins[i]. You can
make some value x if you can choose some of your n coins such that their values sum up to x.
Return the _maximum number of consecutive integer values that youcanmake with your coins starting from and including _0.
Note that you may have multiple coins of the same value.
Input: coins =[1,3]Output: 2Explanation: You can make the following values:-0: take []-1: take [1]You can make 2 consecutive integer values starting from 0.
Input: coins =[1,1,1,4]Output: 8Explanation: You can make the following values:-0: take []-1: take [1]-2: take [1,1]-3: take [1,1,1]-4: take [4]-5: take [4,1]-6: take [4,1,1]-7: take [4,1,1,1]You can make 8 consecutive integer values starting from 0.
If you can make all values up to x, and the next smallest coin is c, you can extend the range to x + c if c <= x + 1. Otherwise, you can’t make x + 1. So, sort the coins and keep extending the range as long as possible.
classSolution {
public:int getMaximumConsecutive(vector<int>& coins) {
sort(coins.begin(), coins.end());
int x =0;
for (int c : coins) {
if (c > x +1) break;
x += c;
}
return x +1;
}
};
import java.util.*;
classSolution {
publicintgetMaximumConsecutive(int[] coins) {
Arrays.sort(coins);
int x = 0;
for (int c : coins) {
if (c > x + 1) break;
x += c;
}
return x + 1;
}
}
1
2
3
4
5
6
7
8
9
10
11
classSolution {
fungetMaximumConsecutive(coins: IntArray): Int {
coins.sort()
var x = 0for (c in coins) {
if (c > x + 1) break x += c
}
return x + 1 }
}
1
2
3
4
5
6
7
8
9
classSolution:
defgetMaximumConsecutive(self, coins: list[int]) -> int:
coins.sort()
x =0for c in coins:
if c > x +1:
break x += c
return x +1
1
2
3
4
5
6
7
8
9
10
11
12
13
impl Solution {
pubfnget_maximum_consecutive(mut coins: Vec<i32>) -> i32 {
coins.sort();
letmut x =0;
for c in coins {
if c > x +1 {
break;
}
x += c;
}
x +1 }
}
1
2
3
4
5
6
7
8
9
10
11
classSolution {
getMaximumConsecutive(coins: number[]):number {
coins.sort((a, b) =>a-b);
letx=0;
for (constcofcoins) {
if (c>x+1) break;
x+=c;
}
returnx+1;
}
}