题解 | #在旋转过的有序数组中寻找目标值#

在旋转过的有序数组中寻找目标值

http://www.nowcoder.com/practice/87c0e7abcbda41e7963660fa7d020995

int search(vector<int>& nums, int target) {
  int len = nums.size();
  if (len == 0) return -1;
  int i = 0;
  int j = len - 1;
  while (i <= j) {
    int mid = i + (j - i) / 2;
    if (nums[mid] == target) return mid;
    // 在左边 , e.g. [3 4 5 6 7 8 1 2]
    if (nums[i] < nums[mid]) {
      // 比如找 5
      if (nums[i] <= target && target < nums[mid]) {
        j = mid - 1;
      } else { // 比如找 1
        i = mid + 1;
      }
    } else { // 在右边, e.g. [7 8 1 2 3 4 5]
      // 比如找  3
      if (nums[mid] < target && target <= nums[j]) {
        i = mid + 1;
      } else { // 比如找8
        j = mid - 1;
      }
    }
  }
  return -1;
}
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
投了多少份简历才上岸
点赞 评论 收藏
分享
nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
xdm怎么说&nbsp;要被拷打了&nbsp;担心是KPI
丹田:面就完了,就当日薪四位数的大佬免费给给你面试。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务