leetCode_Patching Array
来源:互联网 发布:mac phpmyadmin 配置 编辑:程序博客网 时间:2024/06/06 18:33
题意:给定一组正整数数组,要组成1——n之间的所有正整数,问最少要补充多少个数
解法1:类似01背包的做法,首先看看不能组成的最小正整数啥多少,然后把这个数加进去,再重复这个步骤。很显然,时间复杂度和空间复杂度都不能满足题意,虽然这也是贪心哈。
解法2:用min表示当前要找的数,i表示和数组中第几个数相比。初始化为min=1,i=0。如果min>nums[i],则min=min+nums[i],i++;如果min==nums[i],则min=min*2;i++;否则就要补充min这个数了,ans++,min=min*2 。我觉得贪心没有一个固定思路,所以难的贪心比简单的动态规划要难很多。加油吧。leetCode的Hard级别的题目都不容易。下午开始线段树。
代码如下:
int minPatches(vector<int>& nums, int n) { long min=1; int i=0,ans=0; while(min<=n) { cout<<min<<" "<<i<<endl; if(i<nums.size()&&min>nums[i]) { min+=nums[i]; i++; } else if(i<nums.size()&&min==nums[i]) { min=min*2; i++; } else { ans++; min=2*min; } } return ans;}
0 0
- leetCode_Patching Array
- array
- Array#-
- Array#[]
- Array#<<
- Array
- array
- Array
- array
- Array
- array
- array
- array
- array()
- Array
- Array
- Array
- Array
- windows 10 VPN 禁用全局路由
- [剑指offer学习心得]之:替换空格
- spring的IoC环境搭建
- gtags运行时报错 input buffer overflow 解决办法
- C语言中的初等数据结构
- leetCode_Patching Array
- 怎么组队打求生之路(局域网中)
- Catch That Cow(POJ3278)(入门)
- uva 11374/Airport Express
- 幻灯片PPT(PowerPoint)绘制的图形如何转为EPS格式
- 409. Longest Palindrome
- getCurrentSession()与openSession()的区别?
- Java之IO详解(一)
- U3D初学:Rigidbody