leetcode 33. 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 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.
分析:
给出一个旋转的有序数组,所谓的旋转就是在原有的有序数组某个位置把数组分为两部分,把后半部分平移到前面来。
比如: 0 1 2 4 5 6 7 ,
从2和4之间分开,前半部分是0 1 2 ,后半部分是 4 5 6 7 ,把后面的前移变成了 4 5 6 7 0 1 2 。
寻找target的时候,分为两种情况。
(1)mid在第一个上升区间,也就是4 5 6 7 。
如果在这个区间,那么nums[start]是小于nums[mid]的。寻找target分了两种情况,
第一种,target在start和mid之间,也就是在第一个上升区间的前半部分,这样将end结点前移。
第二种,target不在start和mid之间,start后移。
(2)mid在第二个上升区间,也就是 0 1 2
如果在这个区间呢,那么nums[mid]是小于nums[end]的。寻找target分了两种情况,
第一种,target在mid和end之间,也就是在第二个上升区间的后半部分,这样将start结点后移。
第二种,target不在mid和end之间,end前移。
public class Solution {
public int search(int[] nums, int target) {
if (nums.length == 0){
return -1;
}
int start = 0, end = nums.length - 1;
while (start + 1 < end){
int mid = start + (end - start)/2;
if(nums[mid] == target){
return mid;
}
if (nums[start] < nums[mid]){
if (target >= nums[start] && target <= nums[mid]){
end = mid;
}else{
start = mid;
}
}else{
if (target >= nums[mid] && target <= nums[end]){
start = mid;
}else{
end = mid;
}
}
}
if (nums[start] == target){
return start;
}
if (nums[end] == target){
return end;
}
return -1;
}
}
附图,有点丑,不知道会不会掉粉~

leetcode 33. Search in Rotated Sorted Array的更多相关文章
- [array] leetcode - 33. Search in Rotated Sorted Array - Medium
leetcode - 33. Search in Rotated Sorted Array - Medium descrition Suppose an array sorted in ascendi ...
- LeetCode 33 Search in Rotated Sorted Array [binary search] <c++>
LeetCode 33 Search in Rotated Sorted Array [binary search] <c++> 给出排序好的一维无重复元素的数组,随机取一个位置断开,把前 ...
- [LeetCode] 33. Search in Rotated Sorted Array 在旋转有序数组中搜索
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- LeetCode 33. Search in Rotated Sorted Array(在旋转有序序列中搜索)
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法
Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to you before ...
- LeetCode 33.Search in Rotated Sorted Array(M)
题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ( ...
- Java [leetcode 33]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]33. Search in Rotated Sorted Array旋转过有序数组里找目标值
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- LeetCode 33 Search in Rotated Sorted Array(循环有序数组中进行查找操作)
题目链接 :https://leetcode.com/problems/search-in-rotated-sorted-array/?tab=Description Problem :当前的数组 ...
随机推荐
- Linux安全之——Ubuntu的iptable命令使用
设置开机自动启动iptables # sysv-rc-conf --level 2345 iptables on 列出当前iptables的策略和规则 # iptables -L -n 允许已经建立的 ...
- [Java]double初始化问题
如下: 1. 直接初始化 double[][] embossFilter = {{-1/9, 0, 1/9}, {-1/9, 1/9, 1/9}, {-1/9, 0, 1/9}}; 2. 赋值初始化 ...
- ASP------<input type="file"/>上传文件
界面代码(注意:runat="Server"和input file中name一定要有) <html xmlns="http://www.w3.org/1999/xh ...
- nodeJS接受post传过来的参数
1.nodeJs接受Post传递的参数需要通过绑定两个事件来获取, querystring = require("querystring"); 1 app.post('/comm ...
- ecshop商品-》获取促销商品
lib_goods.php->function get_promote_goods(){} /** * 获得促销商品 * * @access public * @return array */ ...
- Working with Transactions (EF6 Onwards)
Data Developer Center > Learn > Entity Framework > Get Started > Working with Transactio ...
- 浅谈T-SQL中的派生表和CTE
引言 表表达式是一种命名的查询表达式,代表一个有效的关系表.MSSQL支持4种类型的表表达式,它们分别是:派生表.公用表表达式(CTE).视图以及内联表值函数.表表达式并不是物理上真实存在的对象,它们 ...
- Apache Maven 入门篇 ( 上 )
作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法. 这个入门篇分上下两篇.本文着重动手,用 mav ...
- 一款符合当前主流审美的Swing外观(Look and Feel)_测试版发布
[前言] 本文将展示的是一款J2SE平台Swing外观(Look and Feel)实现,目前给出的演示jar包仅供测试之用,主体工作已经完成,余下是兼容性测试和调整,附件中的演示jar包推荐运行于j ...
- 如何在html结构标签中使用js 变量 生成可变化的 title标题?
如果form的action不写, 或 action="", 那么就表示 将数据发送到 本文件 当前文件自身... 1. 在jquery的选择器中, $()括号中的内容是一个 exp ...