leetcode Find Minimum in Rotated Sorted Array
2015-06-01 20:55
281 查看
原题:
复杂度为O(n)的算法:
复杂度为O(logn)的算法:
复杂度为O(n)的算法:
class Solution { public: int findMin(vector<int>& nums) { int min=2^31-1; for(int i=0; i<nums.size(); i++){ if(nums[i]<min) min=nums[i]; } return min; } };需要注意的是min的初值,在32位系统中最大的有符号数应该是01111111111111111111111111111111;即2^31-1;
复杂度为O(logn)的算法:
class Solution { public: int findMin(vector<int>& nums) { int begin=0; int end=nums.size()-1; while(begin<=end){ if((end-begin)==1) return nums[begin]>=nums[end]?nums[end]:nums[begin]; if(nums[begin]<=nums[end]) return nums[begin]; int middle=(begin+end)/2; if(nums[middle]>=nums[end]) begin=middle; else end=middle; } return begin; } };需要注意的是边界条件,当只剩下两个元素时能退出程序。
相关文章推荐
- mulitset,mulitmap
- Linux文件权限与目录管理
- CSU 1654
- linux自学笔记
- VelocityTracker类介绍
- Ansible(14)wait_for模块
- SD.Team回复形象小人偶
- 生成二维码,使用JS技术
- 计算几何小模板
- 黑马程序员———Java基础------集合框架知识点总结(二)
- 数据库简单增删改查
- 编程实现队列的入队、出队、测长、打印
- ScrollView嵌套ListView只显示一行(总结)
- tcp/ip ---------- 网际协议之tcp
- hdu 5248 序列变换【二分】
- net/sourceforge/cobertura/coveragedata/TouchColl
- CSU 1648
- cdoj 24 8球胜负(eight) 水题
- Python学习系列(九)(IO与异常处理)
- ListView 连接数据库的增删改查