LeetCode-SearchinRotatedSortedArray

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

题目:

Search in Rotated Sorted Array

Total Accepted: 81090 Total Submissions: 277272 Difficulty: Hard

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 }被翻转为{ 6 7 0 1 2 4 5 }或{ 2 4 5 6 7 0 1 }。

所以每次判断我们都取轻避重,总是跟有序的这边比较。

packagearray;publicclassSearchInRotatedSortedArray {publicintsearch(int[] nums,inttarget) {intlen = 0;if(nums ==null|| (len = nums.length) == 0)return0;//{ 0 1 2 4 5 6 7 }//1. { 6 7 0 1 2 4 5 }//2. { 2 4 5 6 7 0 1 }intl = 0;intr = len - 1;while(l <=r) {intmid = (l + r) / 2;if(nums[mid] == target)returnmid;if(nums[mid] <nums[r]) {if(target > nums[mid] && target <=nums[r])

l= mid + 1;elser= mid - 1;

}else{if(nums[l] <= target && target <nums[mid])

r= mid - 1;elsel= mid + 1;

}

}return-1;

}publicstaticvoidmain(String[] args) {//TODO Auto-generated method stubint[] nums = { 4, 5, 6, 7, 0, 1, 2};

SearchInRotatedSortedArray s=newSearchInRotatedSortedArray();

System.out.PRintln(s.search(nums,2));

}

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航