330. Patching Array
挺难的一道题,很难想得到其中的算法,重点是要观察数字之间的规律。
首先我们要知道,如果我们只用nums数组的前几位来进行组合能得到的最大数是n,那么我们加入数组的下一位数字k后,我们能得到的数就是原先能得到的数和原先能得到的数加k。这是解决这道题目最核心的一点。
我的算法是,先定义一个max,即我们能组合成的一个最大数,一开始设为0。我们从nums数组的第一个数字开始,如果这个数字小于等于max+1(即能组成从1到max加上这个数),则让max增大。如果这个数字大于max+1(即缺少了组合成max+1的情况),则需要result+1,然后继续。
以下是代码: