Problem :当前的数组是一个经过排序之后的循环有序数组,但是该数组的主元选择并不一定是下标为i=0的第一个元素。
例如有序数组为:{1,2,3,4,5,6} 
其循环有序数组可能为: {3,4,5,6,1,2}、 {6,1,2,3,4,5}、{4,5,6,1,2,3}等
 
进行查询操作,使用折半查找。
需要不断判断nums[mid] 与target 
以及 target与 nums[start] 
和 target与nums[end]的大小关系
if (nums[start] <= nums[mid]){//mid大于start
if (target < nums[mid] && target >= nums[start])// target在start和mid之间
end = mid - 1;
else
start = mid + 1;
}
if (nums[mid] <= nums[end]){//mid小于end
if (target > nums[mid] && target <= nums[end])//target在mid和end之间
start = mid + 1;
else
end = mid - 1;
}
 
根据上述的关系,进行对start和end指针的更新操作。
 
直到 nums[mid] == target时,找到当前下标为mid
 
循环条件为while(start<=end) 
 
参考代码:
 
package leetcode_50;

/***
*
* @author pengfei_zheng
* 在数组中查找target 并返回其下标
*/
public class Solution33 {
public int search(int[] nums, int target) {
int start = 0;
int end = nums.length - 1;
while (start <= end){
int mid = (start + end) / 2;
if (nums[mid] == target)
return mid;
if (nums[start] <= nums[mid]){
if (target < nums[mid] && target >= nums[start])
end = mid - 1;
else
start = mid + 1;
}
if (nums[mid] <= nums[end]){
if (target > nums[mid] && target <= nums[end])
start = mid + 1;
else
end = mid - 1;
}
}
return -1;
}
}
 

LeetCode 33 Search in Rotated Sorted Array(循环有序数组中进行查找操作)的更多相关文章

  1. 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 ...

  2. [array] leetcode - 33. Search in Rotated Sorted Array - Medium

    leetcode - 33. Search in Rotated Sorted Array - Medium descrition Suppose an array sorted in ascendi ...

  3. LeetCode 33 Search in Rotated Sorted Array [binary search] <c++>

    LeetCode 33 Search in Rotated Sorted Array [binary search] <c++> 给出排序好的一维无重复元素的数组,随机取一个位置断开,把前 ...

  4. [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. ...

  5. 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. ...

  6. LeetCode 33.Search in Rotated Sorted Array(M)

    题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ( ...

  7. [LeetCode] 26. Remove Duplicates from Sorted Array ☆(从有序数组中删除重复项)

    [LeetCode] Remove Duplicates from Sorted Array 有序数组中去除重复项 描述 Given a sorted array nums, remove the d ...

  8. [LeetCode] 80. Remove Duplicates from Sorted Array II 有序数组中去除重复项 II

    Given a sorted array nums, remove the duplicates in-place such that duplicates appeared at most twic ...

  9. 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 migh ...

随机推荐

  1. PHP替换回车换行的三种方法

    一个小小的换行,其实在不同的平台有着不同的实现,为什么要这样,世界是多样的! 本来在Unix世界换行用/n来代替换行, Windows为了体现不同,就用/r/n, 更有意思的是,Mac中又用了/r. ...

  2. Runtime、System、Object

    Runtime---->Runtime.getRuntime().gc(); System---->System.gc(); Object---->finalize();

  3. 在PC上运行安卓(Android)应用程序的几个方法

    三种方法: 1.在PC安装一个安卓模拟器,在模拟器里面运行apk: 2.虚拟机安装 Android x86 然后在此系统里运行: 3.利用谷歌chrome浏览器运行(这是一个新颖.有前途.激动人心的方 ...

  4. 举例理解Hibernate的三种状态

    初学Hibernate,了解到Hibernate有三种状态:transient(瞬时状态),persistent(持久化状态)以及detached(游离状态). 它们之间有如下转换图来说明: 1.tr ...

  5. 为npm设置代理

    npm全称为Node Packaged Modules.它是一个用于管理基于node.js编写的package的命令行工具.其本身就是基于node.js写的,这有点像gem与ruby的关系. 在我们的 ...

  6. Spring MVC手札

    本文用于记录使用Spring MVC中的零散手札 1.在普通java类中获取HttpServletRequest对象  在web.xml的listener节点加入 <listener> & ...

  7. springmvc 文件下载

    1.使用servlet的API实现 参考:http://my.oschina.net/u/1394615/blog/311307 @RequestMapping("/download&quo ...

  8. AWS系列-创建 IAM 用户

    创建 IAM 用户(控制台) 官方文档 https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/introduction.html 通过 AWS ...

  9. jquery获取元素颜色css('color')的值返回RGB

    css代码如下: a, a:link, a:visited { color:#4188FB; } a:active, a:focus, a:hover { color:#FFCC00; } js代码如 ...

  10. SQLServer------远程调用失败

    1.情况 出现 2.解决方法 打开“控制面板” -> “卸载程序” -> 找到 “Microsoft SQL Server 2016) ExpressLocalDB”将其卸载 -> ...