数组-Search in Rotated Sorted Array(在一个旋转的数组中查找想要的值的指针)
来源:互联网 发布:黑客腾讯软件下载中心 编辑:程序博客网 时间:2024/05/18 01:22
问题描述:
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.
Subscribe to see which companies asked this question
在一个旋转的数组中查找想要的值的指针,没有则返回-1.
思考:
使用二分法,需找中点,既然是旋转数组,那么切入点就是递增和递减序列。
代码(java):
public class SearchInRotatedSortedArray {public int search(int[] nums, int target) {int left = 0, right = nums.length - 1; while( left <= right){ int mid = (left + right)/2; if(nums[mid] == target){ return mid; } ///考虑中点索引小于等于最大值索引 if(nums[left] < nums[mid]){ //肯定在左边,左边一定是递增的 if(target <= nums[mid] && target >= nums[left]){ right = mid - 1; } //要么中点在最大值左边,要么中点是最大值 else if(target > nums[mid] || target < nums[left]){ left = mid + 1; } } //考虑中点索引大于等于最小值索引 else if (nums[left] > nums[mid]){ //中点要么是最小值,要么在最小值的右边 if(target >= nums[left] || target <= nums[mid]){ right = mid -1; } //肯定在左边 else if(target > nums[mid] || target < nums[right]){ left = mid + 1; } } else left ++; } return -1; }public static void main(String[] args){int[] nums = new int[]{4 ,5 ,6 , 7, 0, 1, 2};System.out.println(new SearchInRotatedSortedArray().search(nums, 4));}}
0 0
- 数组-Search in Rotated Sorted Array(在一个旋转的数组中查找想要的值的指针)
- LeetCode Search in Rotated Sorted Array 在旋转了的数组中查找
- Search in Rotated Sorted Array 在旋转的数组中查找元素
- Search in Rotated Sorted Array-旋转数组的查找
- Search in Rotated Sorted Array II 旋转的数组中查找,有重复元素
- 查找已排序的旋转后的数组中的数(Search in Rotated Sorted Array)
- Leetcode--Search in Rotated Sorted Array(旋转数组的查找)
- LeetCode | Search in Rotated Sorted Array(在旋转数组中查找)
- Search in Rotated Sorted Array 在旋转过的有序数组中进行二分查找 重点看解法二 三(重重)
- 【LeetCode刷题】旋转数组的查找 Search in Rotated Sorted Array
- leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法
- Array----- 153. Find Minimum in Rotated Sorted Array(查找旋转后的有序数组中最小值)
- LeetCode------33. Search in Rotated Sorted Array(旋转数组中查找)
- LeetCode 81. Search in Rotated Sorted Array II(搜索旋转的数组)
- LeetCode @ Search in Rotated Sorted Array 旋转数组查找
- LeetCode OJ 之 Search in Rotated Sorted Array (有序数组翻转后的查找)
- LeetCode 33 Search in Rotated Sorted Array(在旋转排序数组中搜索)(*)
- leetcode解题之153&154. Find Minimum in Rotated Sorted Array版(在旋转的数组中查找最小数字)
- HDU_3335_Divisibility(DancingLinksX重复覆盖||dfs||暴力)
- 杂
- 在ListCtrl控件中插入图标
- Android图片墙实现
- Android: 如何实现ScrollView中含有ListView
- 数组-Search in Rotated Sorted Array(在一个旋转的数组中查找想要的值的指针)
- zoj3871Convex Hull
- HDU-ACM2017
- 判断两幅Mat型的图片是否是相同的,然后进行相应的处理
- Android开发解决加载图片OOM问题(非常全面 兼顾4.0以下系统)(by 星空武哥)
- 海盗分珠宝
- HDU-ACM2018
- git常用命令汇总(命令行模式)
- 视图动画效果