原数组的值不能用时,**贪心:**能够直接扩大可表示的区间范围,把补充的num设为ach + 1即可,新区间为[1,ach + ach + 1]
如果原数组中的值能用,就用数组中的值
3、代码实现
publicintminPatches(int[] nums,int n){long ach =0;//当前能表示的最大数字,n在Integer范围内但ach可能越界//nums数组的当前下标、需要补的数字个数、nums数组的长度int index =0,count =0,len = nums.length;while(ach < n){//条件1说明数组的数用完了,条件2说明[ach + 1,num - 1]区间内数字无法表示if(index >= len || ach +1< nums[index]){
ach += ach +1;
count++;//补新数ach+1后能表示的最大数范围为ach + ach + 1}else{//nums数组的数没用完且好用的时候
ach += nums[index];
index++;}}return count;}