Leetcode--Search in Rotated Sorted Array
来源:互联网 发布:阿里的大数据应用 编辑:程序博客网 时间:2024/06/08 01:49
题目链接:https://leetcode.com/problems/search-in-rotated-sorted-array/description/
题目的意思是本来一个数组是升序排列的,现在可能以某一个数为结点进行了翻转,也有可能没有。题目是二分查找的变体,但因为有rotate的存在,当切取一半的时候可能会出现误区,需要我们自行判断,数组nums[],左边缘为l,右边缘为r,还有中间点为m,在每次迭代中,分三种情况讨论。
(1)如果target==nums[m],那么m就是我们要的结果,直接返回;
(2)如果nums[m]<nums[r],那么说明从m到r一定是有序的(没有受到rotate的影响),那么我们只需要判断target是不是在m到r之间,如果是则把左边缘移到m+1,否则就target在另一半,即把右边缘移到m-1。
(3)如果nums[m]>=nums[r],那么说明从l到m一定是有序的,同样只需要判断target是否在这个范围内,相应的移动边缘即可。
根据以上方法,每次我们都可以切掉一半的数据,所以算法的时间复杂度是O(logn),空间复杂度是O(1)。代码如下:
int search(vector<int>& nums, int target) { if(nums.empty()) return -1; int l=0,r=nums.size()-1; while(l<=r){ int m=(l+r)/2; if(target==nums[m]) return m; if(nums[m]<nums[r]) { if(target>nums[m]&&target<=nums[r]) l=m+1; else r=m-1; } else { if(target>=nums[l]&&target<nums[m]) r=m-1; else l=m+1; } } return -1; }
阅读全文
0 0
- [leetcode][search] Search in Rotated Sorted Array
- LeetCode: Search in Rotated Sorted Array
- LeetCode: Search in Rotated Sorted Array II
- LeetCode Search in Rotated Sorted Array
- LeetCode Search in Rotated Sorted Array II
- [Leetcode] Search in Rotated Sorted Array
- LeetCode : Search in Rotated Sorted Array
- LeetCode : Search in Rotated Sorted Array II
- [LeetCode] Search in Rotated Sorted Array II
- [LeetCode] Search in Rotated Sorted Array
- [Leetcode] Search in a Rotated Sorted Array
- [Leetcode] Search in Rotated Sorted Array II
- leetcode 97: Search in Rotated Sorted Array
- [LeetCode] Search in Rotated Sorted Array
- [leetcode] Search in Rotated Sorted Array
- [leetcode] Search in Rotated Sorted Array II
- Leetcode Search in Rotated Sorted Array
- [LeetCode]Search in Rotated Sorted Array
- 在Action中使用Servlet API
- MongoDB基础使用(一)
- koa2后端热更新
- yum安装的docker的卸载
- 学习GitHub
- Leetcode--Search in Rotated Sorted Array
- 深入理解Laravel框架--手动创建laravel框架(2)
- 卡尔曼滤波matlab仿真
- PHP代码审计实战之XDcms
- 靠谱的网站专题页seo优化技巧 恰当的网站专题页面能将时效性较强的事件转化为自己网站的流量,很多站点也有针对站内的重点产品或服务制作专门的页面,采用靠谱的seo优化技巧,让专题页的效果达到最佳。
- 从零开始开发Android版2048 (十)
- 趕快升級你的裝備去買V R
- C++风格_Google特色
- 安装配置maven时,使用mvn命令,报出mvn不是内部或外部命令解决方法