Search in Rotated Sorted Array, 查找反转有序序列。利用二分查找的思想。反转序列。
问题描述:一个有序序列经过反转,得到一个新的序列,查找新序列的某个元素。12345->45123。
算法思想:利用二分查找的思想,都是把要找的目标元素限制在一个小范围的有序序列中。这个题和二分查找的区别是,序列经过mid拆分后,是一个非连续的序列。特别要注意target的上下限问题。因为是非连续,所以要考虑上下限,而二分查找,序列式连续的,只用考虑单限。有递归算法和迭代算法。
递归算法:
public int search(int[] nums, int target)
{
return binarySearch(nums, 0, nums.length - 1, target);
}
//递归方法
public int binarySearch(int[] nums, int left, int right, int target)
{
//不要忘了这个边界条件。
if(left > right)
{
return -1;
}
int mid = (left + right)/2;
if(target == nums[mid])
{
return mid;
}
if(nums[left] <= nums[mid])//做连续,要包含"="的情况,否则出错。
{
if(target >= nums[left] && target < nums[mid])//target上下限都要有
{
return binarySearch(nums, left, mid - 1, target);//记得return
}
else
{
return binarySearch(nums, mid + 1, right, target);
}
}
else
{
if(target > nums[mid] && target <= nums[right])
{
return binarySearch(nums, mid + 1, right, target);
}
else
{
return binarySearch(nums, left, mid - 1, target);
}
}
}
迭代算法:
//迭代方法
public int binarySearch2(int[] nums, int left, int right, int target)
{ while(left <= right)
{
int mid = (left + right)/2;
if(target == nums[mid])
{
return mid;
} if(nums[left] <= nums[mid]) //左连续,所以要包含=的情况。否则出错。
{
if(target >= nums[left] && target < nums[mid])
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
else
{
if(target > nums[mid] && target <= nums[right])
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
}
return -1;
}
Search in Rotated Sorted Array, 查找反转有序序列。利用二分查找的思想。反转序列。的更多相关文章
- LeetCode 33 Search in Rotated Sorted Array(循环有序数组中进行查找操作)
		题目链接 :https://leetcode.com/problems/search-in-rotated-sorted-array/?tab=Description Problem :当前的数组 ... 
- [CareerCup] 11.3 Search in Rotated Sorted Array 在旋转有序矩阵中搜索
		11.3 Given a sorted array of n integers that has been rotated an unknown number of times, write code ... 
- [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 7 migh ... 
- leetcode 题解:Search in Rotated Sorted Array II (旋转已排序数组查找2)
		题目: Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would t ... 
- [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 Search in Rotated Sorted Array 在旋转了的数组中查找
		Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to you before ... 
- LeetCode OJ: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旋转过有序数组里找目标值
		Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ... 
- [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 7might ... 
- 【Search in Rotated Sorted Array II 】cpp
		题目: Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would t ... 
随机推荐
- 爬虫入门【11】Pyspider框架入门—使用HTML和CSS选择器下载小说
			开始之前 首先我们要安装好pyspider,可以参考上一篇文章. 从一个web页面抓取信息的过程包括: 1.找到页面上包含的URL信息,这个url包含我们想要的信息 2.通过HTTP来获取页面内容 3 ... 
- 160712、Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
			互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使 ... 
- 微软Build 2017开发者大会午夜趴
			时间:2017年5月10号半夜 地点:微软中关村会议室 一年一度的Build大会,微软今年特地组织了一波粉丝到“现场”远程观摩keynote直播,同时在新浪直播间里也有相应的专家进行同步翻译和讲(tu ... 
- c# public private protected internal protected internal
			一个 访问修饰符 定义了一个类成员的范围和可见性.C# 支持的访问修饰符如下所示: public:所有对象都可以访问: private:对象本身在对象内部可以访问: protected:只有该类对象及 ... 
- Java中native关键字使用
			native是与C++异构开发的时候用的.java自己开发不会使用 
- elastic search远程测试
			elastic search远程测试 推荐:elastic官方教程:https://www.elastic.co/guide/en/elasticsearch/reference/6.2/index. ... 
- Ubuntu系统Python3相关环境或模块安装
			前提:一般用户安装都命令前都需要sudo ,或者在root用户下 1.Ubuntu 16.04 安装PyCharm Ubuntu 16.04 安装PyCharm 本文通过第三方源安装PyCharm,好 ... 
- SPL(Standard PHP Library 标准PHP类库)
			SplFileObject 读取大文件从第N行开始读: $line = 10; $splFileObj = new SplFileObject(__FILE__,'r'); $splFileObj-& ... 
- 简明python教程二-----对象
			物理行:是你在编写程序时所看见的. 逻辑行:是Python看见的单个语句. 默认的,python希望每行都只使用一个语句,这样使得代码更加易读. 如果你想要在一个物理行中使用多于一个逻辑行,用分号“: ... 
- php foreach函数的用法
			php foreach函数用法举例. Foreach 函数(PHP4/PHP5) foreach 语法结构提供了遍历数组的简单方式. foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类 ... 
