zoukankan      html  css  js  c++  java
  • [LeetCode]Search in Rotated Sorted Array

    题目描述:(链接)

    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.

    解题思路:

    二分查找,分三种情况讨论,找个例子,例如(0,1,2,3,4),把所有的旋转情况都画出来就可以了,主要是边界比较难确定。

    class Solution {
    public:
        int search(vector<int>& nums, int target) {
            size_t first = 0;
            size_t last = nums.size();
            
            while (first != last) {
                size_t mid = first + (last - first) / 2;
                if (nums[mid] == target) {
                    return mid;
                } else if (nums[mid] >= nums[first]) {
                    if (nums[first] <= target && target < nums[mid]) {
                        last = mid;
                    } else {
                        first = mid + 1;
                    }
                } else {
                    if (nums[mid] < target && target <= nums[last - 1]) {
                        first = mid + 1;
                    } else {
                        last = mid;
                    }
                }
            }
            return -1;
        }
    };
    

      

  • 相关阅读:
    git简单介绍
    ssh常用操作
    gentoo emerge简单用法
    golang程序因未知错误崩溃时如何记录异常
    RPC实现原理(HSF、dubbo) 从头开始(一)
    websocket
    tmpfs小结
    CURL常用命令
    SVN命令详解
    3.Linux Shell流程控制
  • 原文地址:https://www.cnblogs.com/skycore/p/4848329.html
Copyright © 2011-2022 走看看