• 【Lintcode】062.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.

    Example

    For [4, 5, 1, 2, 3] and target=1, return 2.

    For [4, 5, 1, 2, 3] and target=0, return -1.

    题解:

    class Solution {
    public:
        /**
         * @param nums: a rotated sorted array
         * @return: the minimum number in the array
         */
        int search(vector<int> &A, int target) {
            if (A.empty()) {
                return -1;
            }
            int start = 0, end = A.size() - 1;
            while (start + 1 < end) {
                int mid = start + (end - start) / 2;
                if (A[mid] == target) {
                    return mid;
                } 
                if (A[start] < A[mid]) {
                    if (A[start] <= target && target <= A[mid]) {
                        end = mid;
                    } else {
                        start = mid;
                    }
                } else {
                    if (A[mid] <= target && target <= A[end]) {
                        start = mid;
                    } else {
                        end = mid;
                    }
                }
            }
            
            if (A[start] == target) {
                return start;
            } else if (A[end] == target){
                return end;
            }
            
            return -1;
        }
    };
  • 相关阅读:
    numpy学习之矩阵之旅
    HDFS之深入简出(一)
    Hadoop特点
    ThreadLocal的理解
    DBCP连接数据库了解一下
    DBCP连接数据库了解一下
    axaj 的回调
    javaWEB登录ajax传值
    JavaWeb网站后台开发记录手册
    Python--控制循环语句
  • 原文地址:https://www.cnblogs.com/Atanisi/p/6822611.html
Copyright © 2020-2023  润新知