题目链接:
https://www.nowcoder.com/questionTerminal/296c2c18037843a7b719cf4c9c0144e4
public class Solution {
/**
* 正数数组中的最小不可组成和
* 输入:正数数组arr
* 返回:正数数组中的最小不可组成和
*/
public int getFirstUnFormedNum(int[] arr) {
int min = Integer.MAX_VALUE;
int max = 0;
for(int i : arr){
min = Math.min(i, min);
max += i;
}
boolean[] res = new boolean[max + 1];
res[0] = true;
for(int k : arr){
for(int j = max; j >= k; j--){
res[j] = res[j - k] || res[j];
}
}
for(int j = min; j < res.length; j++){
if(!res[j]){
return j;
}
}
return max + 1;
}
}