【贪心】假设原来已经可以构造的区间是[0, 5],意思是从0到5的数都能被构成,如果此时来了个数字为2,那么区间中每个数加上2之后变成[2, 7],由于2 <= 5 + 1,因此可以合并两个区间为[0, 7]。但是如果此时来的数是7,那么更新后的区间是[7, 12],此时两个区间没有交集,6这个数字就无法被构成了。因此为了使得a[0] + x 尽可能小于a[1],需要把nums按照从小到大排序。
class Solution {
public int getMaximumConsecutive(int[] coins) {
Arrays.sort(coins);
int[] a = new int[] {0, 0};
for (int x: coins) {
if (a[1] + 1 >= a[0] + x) {
a[1] += x;
} else {
break;
}
}
return a[1] + 1;
}
}