题目:
给你一个长度为 n 的整数数组 coins ,它代表你拥有的 n 个硬币。第 i 个硬币的值为 coins[i] 。如果你从这些硬币中选出一部分硬币,它们的和为 x ,那么称,你可以 构造 出 x 。
请返回从 0 开始(包括 0 ),你最多能 构造 出多少个连续整数。
你可能有多个相同值的硬币。
算法:
方法一:动态规划
遍历coins,如果当前能构造到x,说明已经能构造出0~x的所有数字,新来一个硬币,日过是x+1,则能新构造出[0+x+1, x+x+1]的所有数字,而如果新来的硬币是x + 2则没法构造出x+1,至此中断构造。
这怎么想到的啊!
func getMaximumConsecutive(coins []int) int {
ans := 0
sort.Ints(coins)
for i := range coins {
if coins[i] > ans + 1 {
break
}
ans = ans + coins[i]
}
return ans + 1
}