Search in Rotated Sorted Array
来源:互联网 发布:淘宝开抢是什么意思 编辑:程序博客网 时间:2024/05/16 09:51
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.
思路:采用二分查找的思想,每次缩小区间的一半,由于是循环数组,所以要好好判断分区间的条件。容易知道数组分成两半,并且两半都是有序的,并且后一半的数总是小于前一半的数。每次先找出区间的最中间的数nums[mid],将最中间的数与数组最右边的数nums[right]比较,如果nums[mid]小于nums[right]说明mid到right之间的数是从小到大排列的,这时如果target在这个序列之间,那么就得出target在后一半区间,否则就是在前一半区间。
如果nums[mid]大于nums[right],这说明前一半数字是有序的,如果target在nums[left]和nums[mid]之间,就说明区间在前一半,否则区间在后一半。如此重复,不断缩小区间,直到return,找不到最后就return -1.
public class Solution { public int search(int[] nums, int target) { int left = 0; int right = nums.length - 1; int mid = 0; while (left <= right && left <= (nums.length - 1) && right <= (nums.length - 1)) { mid = (left + right) / 2; if (target == nums[left]) return left; if (target == nums[right]) return right; if (nums[mid] == target) return mid; else if (nums[mid] <= nums[right]) { if (target < nums[right] && target > nums[mid]) left = mid + 1; else right = mid - 1; } else { if (target > nums[left] && target < nums[mid]) right = mid - 1; else left = mid + 1; } } return -1; }}
0 0
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- 使用winsock2.h各种奇葩错误
- CentOS常见版本下载
- 赛码"BestCoder"杯中国大学生程序设计冠军赛hdu5216
- UVa 11552 - Fewest Flops(DP,状态设计)
- Chrome对网页性能的检测--2015-05-05总结
- Search in Rotated Sorted Array
- PHP页面静态化
- atitit.印度教与java宗教的特点与观念对比 attilax总结
- android开发之一 —— 系统介绍
- 指针类型转换
- linux 命令系列之 sort 和 wc命令(58)
- IT技术创业的方向
- 文章标题
- placement new 的使用实例