搜索旋转排序数组 查看运行结果 ——LintCode
2015-12-17 16:39
417 查看
假设有一个排序的按未知的旋转轴旋转的数组(比如,0
1 2 4 5 6 7 可能成为4 5 6 7 0 1 2)。给定一个目标值进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。
你可以假设数组中不存在重复的元素。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出[4, 5, 1, 2, 3]和target=1,返回 2
给出[4, 5, 1, 2, 3]和target=0,返回 -1
***********************************************
用二分法查找的时候要划分清 要查找的值可能在一段
1 2 4 5 6 7 可能成为4 5 6 7 0 1 2)。给定一个目标值进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。
你可以假设数组中不存在重复的元素。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出[4, 5, 1, 2, 3]和target=1,返回 2
给出[4, 5, 1, 2, 3]和target=0,返回 -1
***********************************************
用二分法查找的时候要划分清 要查找的值可能在一段
public class Solution { /** *@param A : an integer rotated sorted array *@param target : an integer to be searched *return : an integer */ public int search(int[] A, int target) { // write your code here int left = 0; int right = A.length-1; while (left <= right) { int mid = (left + right)/2; if(A[mid] == target) return mid; if(A[mid] > A[left] && target <= A[mid]){ if(A[mid] > target && target > A[left]) right = mid-1; else { left = mid+1; } } else{ if(A[mid] < target && target <= A[right]) left = mid + 1; else right = mid - 1; } } return -1; } }
相关文章推荐
- 杂感
- Linux下的Mysql笔记整理(二)
- SQL查找列(字段)重复值及操作
- grunt搭建自动化的web前端开发环境
- 02-自定义CALayer
- 不改变中间层,如何玩转 .NET 的远程处理功能?
- Windows系统怎么输入特殊符号?三种使用输入法输入特殊符号的教程
- Codeblocks下用自己的makefile
- 基于连通图的分裂聚类算法
- 杂记
- [Navicat] 常用快捷键及注意事项
- Unity5新版Shader模板源码解析
- 单向链表
- Linux下的Mysql笔记整理(二)
- Eclipse导入Erlang项目出现乱码 如何解决
- jQuery on()方法
- jquery渐隐轮播
- SVN相关
- Android中OnClick的五种实现方式 ---------------------- (来源于尚学堂的尧玮老师)
- win10搜索不到无线网络,手机打开热点也连不上怎么解决?