330. Patching Array

来源:互联网 发布:淘宝店怎么做虚拟产品 编辑:程序博客网 时间:2024/06/08 11:36

挺难的一道题,很难想得到其中的算法,重点是要观察数字之间的规律。

首先我们要知道,如果我们只用nums数组的前几位来进行组合能得到的最大数是n,那么我们加入数组的下一位数字k后,我们能得到的数就是原先能得到的数和原先能得到的数加k。这是解决这道题目最核心的一点。

我的算法是,先定义一个max,即我们能组合成的一个最大数,一开始设为0。我们从nums数组的第一个数字开始,如果这个数字小于等于max+1(即能组成从1到max加上这个数),则让max增大。如果这个数字大于max+1(即缺少了组合成max+1的情况),则需要result+1,然后继续。

以下是代码:


原创粉丝点击