【leetcode】Array——Search in Rotated Sorted Array(33)
2016-02-14 11:15
405 查看
题目:
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e.,
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.
自己的思路:
递归,如果是正常的顺序那一半,则用binary search,如果是在转折的另一半,则递归,最终会统一成binary search
自己的思路虽然勉强解决的问题,但是思路不清晰,不简洁,借鉴别人的思路
leetcode算法:https://leetcode.com/discuss/22678/revised-binary-search
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e.,
0 1 2 4 5 6 7might 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.
自己的思路:
递归,如果是正常的顺序那一半,则用binary search,如果是在转折的另一半,则递归,最终会统一成binary search
public int search(int[] nums, int target) { if(nums.length==0) return -1; return getIndex(nums,0,nums.length-1,target); } private int binarySearch(int []nums,int start,int end,int target){ while(start<=end){ int mid = (start+end)/2; if(target>nums[mid]) start=mid+1; else if(target<nums[mid]) end=mid-1; else return mid; } return -1; } private int getIndex(int nums[],int start,int end,int target){ int MID = (start+end) /2; if(nums[MID]>nums[start]){ if(target<=nums[MID]&&target>=nums[start]){ return binarySearch(nums, start, MID, target); }else{ return getIndex(nums, MID, end,target); } } else if(nums[MID]<nums[start]){ if(target>=nums[MID]&&target<=nums[end]){ return binarySearch(nums, MID, end, target); }else{ return getIndex(nums, start, MID,target); } }else{ if(nums[start]==target) return start; else if(nums[end]==target) return end; else return -1; } }
自己的思路虽然勉强解决的问题,但是思路不清晰,不简洁,借鉴别人的思路
leetcode算法:https://leetcode.com/discuss/22678/revised-binary-search
相关文章推荐
- OKHttp使用简介
- RISC和CISC的比较&VLIW、EPIC
- 初次锻炼 重量
- iOS MVC设计模式
- C#委托与事件初探
- 前端,我为什么不要你
- iOS企业发布问题记录一(为什么iOS的应用安装到一半时提示"无法下载应用程序"?)
- ctags使用
- 一个故事,让你一生不再生气
- 前端,我为什么不要你
- 8VC Venture Cup 2016 - Elimination Round B. Cards 瞎搞
- PHP魔术方法使用方法汇总
- Cygwin安装
- Adafruit的樹莓派教程第八課:使用伺服馬達
- Visual Studio 2013 离线版MSDN配置
- NGUI-使用UILabel呈现图片和不同格式的文字
- wamp配置虚拟主机
- html5 学习资料
- QMenu使用
- [置顶] unity中NavMesh组件及使用介绍