[LeetCode] Search in Rotated Sorted Array [35]
题目
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
You are given a target value to search. If found in the array return its index, otherwise return -1.
You may assume no duplicate exists in the array.
原题链接(点我)
解题思路
旋转数组中的查找。
[1, 2, 3, 4, 5, 6]的一个旋转数组为[4, 5, 6, 1, 2, 3]。在旋转数组中寻找一个数。
最直接的方法。一次遍历。时间复杂度O(n)。可是既然是一个部分有序的数组,那么对于有序的部分我们能够想方法用二分查找。这个能够提高效率。
代码实现
class Solution {
public:int search(int A[], int n, int target) {if(A==NULL || n<=0) return -1;int begin = 0, end = n-1;while(begin<=end){int mid = begin + (end-begin)/2;if(A[mid] == target)return mid;if(A[mid] > A[end]){//前半段if(A[begin]<=target && A[mid] > target){//target 在 begin 和 mid-1 之间end = mid-1;}else{begin = mid+1;}}else if(A[mid] < A[end]){//在后半段if(A[mid] < target && A[end] >=target){//target 在 mid+1 和 end 之间begin = mid+1;}else{end = mid-1;}}else{// 由于这个题数组中不含有反复元素,此时begin==end==mid而且A[mid]!=target。所以不存在break;}}return -1;}
};
另外,我开通了微信公众号--分享技术之美,我会不定期的分享一些我学习的东西.
转载于:https://www.cnblogs.com/yxwkf/p/5222886.html
[LeetCode] Search in Rotated Sorted Array [35]相关推荐
- LeetCode Search in Rotated Sorted Array II
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would t ...
- LeetCode Search in Rotated Sorted Array II -- 有重复的旋转序列搜索
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...
- leetcode - Search in Rotated Sorted Array II
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...
- leetcode:Search in Rotated Sorted Array
题目要求: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 ...
- [leetcode]Search in Rotated Sorted Array @ Python
原题地址:https://oj.leetcode.com/problems/search-in-rotated-sorted-array/ 题意: Suppose a sorted array is ...
- [leetcode]Search in Rotated Sorted Array II
这道题目仍然是二分,去掉不可能的部分.用了递归,在重复的情况下,就是有可能最左边的和最右边的相等,此时就不能直接判断出区间外的元素,左右两边同时递归.有重复元素的时候,在bad case的时候会退化为 ...
- [LeetCode] Search in Rotated Sorted Array
二分 : 判断条件 当a[left] <= a[mid]时,可以肯定a[left..mid]是升序的 循环有序 一共有以下两种情况 第一种 / / / / / / 条件: (A[mid] &g ...
- LeetCode Online Judge 题目C# 练习 - Search in Rotated Sorted Array II
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...
- LeetCode 33. Search in Rotated Sorted Array
问题链接 LeetCode 33. Search in Rotated Sorted Array 题目解析 给定一个 "升序" 的 无重复 数组,从中寻找目标值."升序& ...
- 【leetcode】Search in Rotated Sorted Array II(middle)☆
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...
最新文章
- python 点云las、laz文件的读取、写入、压缩
- 创建MYSQL的储存过程
- Grub 修复(文件损坏)有备份
- java linux路径 home_根据linux自带的JDK,配置JAVA_HOME目录
- Python3学习笔记:使用代理访问url地址
- python获取列表中指定元素的下标
- sublime 2 中常用快捷键
- 工作单元php,php – 无法从工作单元测试用例构建最简单的套件
- 0301 - 一个比价的小项目
- CodeForces - 967D Resource Distribution(贪心+二分+构造)
- Java Serializable:明明就一个空的接口嘛
- 【C语言】单链表的相关热点面试题(包括:从尾到头打印,逆置,冒泡,寻找中间节点,倒数k节点)
- [html]html实现页面跳转都有哪些方法?
- Django - 模板相关
- 网页空间 - 概念篇
- ExcelHandle
- 银行软件测试工作量分析和评估方法(转)
- C++ 构造函数体内赋值与初始化列表的区别
- pylot网站压力测试
- 对路径的访问被拒绝怎么办_工作组计算机无法访问,教您无法访问工作组计算机的解决技巧...