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.

ps:这题和剑指offter的题目类似。一次AC

思路,由于没有重复数字,

1.我们先找出最大值在哪个位置。

2.然后拿target和A[0]做比较,若target>A[0],则在0~max_loc之间来二分查找数组;若target<A[0],则在max_loc+1~n-1来查找数组。

代码:

class Solution {
public:
int binarySearch(int start,int end,int A[],int target){
int l=start;int r=end;int mid=;
while(l<=r){
mid=(l+r)/;
if(A[mid]>target) r=mid-;
else if(A[mid]<target) l=mid+;
else return mid;
}
return -;
}
int findMaxValueLoction(int A[],int n){
if(A[n-]>A[]) return n-;
int l=;int r=n-;int mid=;
while(l<=r){
mid=(l+r)/;
if(mid==) return mid;
else if(mid!=&&A[mid]>A[]&&A[mid]>A[mid-]&&A[mid]<A[mid+]){
l=mid+;
}
else if(mid!=&&A[mid]<A[]&&A[mid]>A[mid-]&&A[mid]<A[mid+]){
r=mid-;
}
else if(mid!=&&A[mid]>A[mid-]&&A[mid]>A[mid+]){
return mid;
}else{
return mid-;
}
}
return -;
}
int search(int A[], int n, int target) {
if(A==NULL||n==) return -;
int max_loc=findMaxValueLoction(A,n);
if(target>A[])
return binarySearch(,max_loc,A,target);
else if(target<A[])
return binarySearch(max_loc+,n-,A,target);
else
return ;
}
};

最新文章

  1. 两个多项式相加 ( C++ )
  2. 《bootstrap》实战---小问题,大Bug
  3. Java初学者入门应该掌握的30个概念
  4. windows下 mysql忘记密码怎么办
  5. java 面试每日一题7
  6. extern &quot;C&quot; __declspec(dllexport) __declspec(dllimport) 和 def
  7. netty4 连通步骤
  8. 理解HMM
  9. 【进阶——种类并查集】hdu 1829 A Bug&#39;s Life (基础种类并查集)TUD Programming Contest 2005, Darmstadt, Germany
  10. 文件上传-html
  11. windows 编程 —— 子窗口类别化(Window Subclassing)
  12. Hadoop 2.x(YARN)安装配置LZO
  13. Java项目开发第二天
  14. 贝塞尔曲线 &amp; CAShapeLayer &amp; Stroke 动画 浅谈
  15. window.open a.href打开窗口referer的问题
  16. Answers to &quot;Why are my jobs not running?&quot;
  17. mitx一大堆统计学知识
  18. OpenCV常用数据类型
  19. SVN的Branch和Tag管理
  20. Win10系列:C#应用控件基础2

热门文章

  1. IOS代码收集
  2. [Python學習筆記] 使用xlwings 插入註解 (forked 版本)
  3. delphi中使用自定义资源的方法
  4. Selenium3+python自动化008-操作浏览器基本方法
  5. Java任务执行计时
  6. Java之字符,字符串替换
  7. No-1.文件和目录
  8. java读取配置文件的推荐方法getResource、getResourceAsStream
  9. LeetCode(37) Sudoku Solver
  10. 杭电 1260 Tickets