1. 程式人生 > >LintCode-搜尋旋轉排序陣列

LintCode-搜尋旋轉排序陣列

假設有一個排序的按未知的旋轉軸旋轉的陣列(比如,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

標籤 

相關題目 

分析:二分查詢,主要是確定單調遞增的那一段區間

程式碼:

class Solution {
    /** 
     * param A : an integer ratated sorted array
     * param target :  an integer to be searched
     * return : an integer
     */
public:
    int search(vector<int> &A, int target) {
        // write your code here
        return search(A,target,0,A.size()-1);
    }
    int search(vector<int>&A,int target,int l,int r)
    {
        if(l>r)
            return -1;
        int mid = (l+r)/2;
        if(A[mid]==target)
            return mid;
        if(A[mid]>A[l])
        {
            if(A[mid]>=target&&target>=A[l])
                return search(A,target,l,mid-1);
            else
                return search(A,target,mid+1,r);
        }
        else
        {
            if(A[mid]<=target&&target<=A[r])
                return search(A,target,mid+1,r);
            else
                return search(A,target,l,mid-1);
        }
        
    }
};


相關推薦

LintCode-搜尋旋轉排序陣列

假設有一個排序的按未知的旋轉軸旋轉的陣列(比如,0 1 2 4 5 6 7 可能成為4 5 6 7 0 1 2)。給定一個目標值進行搜尋,如果在陣列中找到目標值返回陣列中的索引位置,否則返回-1。 你可以假設陣列中不存在重複的元素。 您在真實的面試中是否遇到過這個題?

LintCode : 搜尋旋轉排序陣列

假設有一個排序的按未知的旋轉軸旋轉的陣列(比如,0 1 2 4 5 6 7 可能成為4 5 6 7 0 1 2)。給定一個目標值進行搜尋,如果在陣列中找到目標值返回陣列中的索引位置,否則返回-1。 你可以假設陣列中不存在重複的元素。 方案一:遍歷所有

Lintcode 搜尋插入位置/搜尋旋轉排序陣列插入位置

問題1 搜尋插入位置 給定一個排序陣列和一個目標值,如果在陣列中找到目標值則返回索引。如果沒有,返回到它將會被按順序插入的位置。 你可以假設在陣列中無重複元素。 樣例 [1,3,5,6],5 → 2 [1,3,5,6],2 → 1 [1,3,5,6], 7 → 4 [

【兩次過】Lintcode 63. 搜尋旋轉排序陣列 II

跟進“搜尋旋轉排序陣列”,假如有重複元素又將如何? 是否會影響執行時間複雜度? 如何影響? 為何會影響? 寫出一個函式判斷給定的目標值是否出現在陣列中。 樣例 給出[3,4,4,5,7,0,1,2]和target=4,返回 true 解題思路: 只需要舉出能夠

【兩次過】Lintcode 62. 搜尋旋轉排序陣列

假設有一個排序的按未知的旋轉軸旋轉的陣列(比如,0 1 2 4 5 6 7 可能成為4 5 6 7 0 1 2)。給定一個目標值進行搜尋,如果在陣列中找到目標值返回陣列中的索引位置,否則返回-1。 你可以假設陣列中不存在重複的元素。 樣例 給出[4, 5, 1, 2, 3]

LintCode 62. 搜尋旋轉排序陣列

假設有一個排序的按未知的旋轉軸旋轉的陣列(比如,0 1 2 4 5 6 7 可能成為4 5 6 7 0 1 2)。給定一個目標值進行搜尋,如果在陣列中找到目標值返回陣列中的索引位置,否則返回-1。你可以假設陣列中不存在重複的元素。public class Solution {

LintCode 63. 搜尋旋轉排序陣列 II

跟進“搜尋旋轉排序陣列”,假如有重複元素又將如何?是否會影響執行時間複雜度?如何影響?為何會影響?寫出一個函式判斷給定的目標值是否出現在陣列中。public class Solution { /** * @param A: an integer ratated

LeetCode-33 search-in-rotated-sorted-array 搜尋旋轉排序陣列

題目連結 https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ 題意         對於一個升序排序的陣列,從某個位置截斷,然後直接拼在後面。看題目給的例子,還是比較

[Swift]LeetCode81. 搜尋旋轉排序陣列 II | Search in Rotated Sorted Array II

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., [0,0,1,2,2,5,6] might become [2,5,6,0

leet33. 搜尋旋轉排序陣列

題目: 假設按照升序排序的陣列在預先未知的某個關鍵點上旋轉。 (即 0 1 2 4 5 6 7 將變成 4 5 6 7 0 1 2)。 給你一個目標值來搜尋,如果陣列中存在這個數則返回它的索引,否則返回 -1。 你可以假設陣列中不存在重複。 分析: 可

leetcode題庫——搜尋旋轉排序陣列

題目描述: 假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。 搜尋一個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回&nbs

Leetcode篇:搜尋旋轉排序陣列

@author: ZZQ @software: PyCharm @file: search.py @time: 2018/11/12 18:12 要求:假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。 搜

【JS】搜尋旋轉排序陣列 II #陣列 #二分查詢

假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,0,1,2,2,5,6] 可能變為 [2,5,6,0,0,1,2] )。 編寫一個函式來判斷給定的目標值是否存在於陣列中。若存在返回 true,否則返回 false。 示例 1: 輸入: nums

【JS】 搜尋旋轉排序陣列 #陣列 #二分查詢

假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。 搜尋一個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 -1 。 你可以假設陣列中不存在重複的元素。 你的

Leetcode 33 搜尋旋轉排序陣列

【題目描述】 假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。 搜尋一個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 

LeetCode33-搜尋旋轉排序陣列

昨天參加學院舉辦的演算法比賽 從上午10點一直考到下午3點 唯一的感受就是 中午發的兩袋皇冠蛋糕和牛奶 真TM的好吃!!! 33-搜尋旋轉排序陣列 假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,6,7]&nbs

33. 搜尋旋轉排序陣列Leetcode

假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。 搜尋一個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 -1 。 你可以假設陣列中不存在重複

【LeetCode】#81搜尋旋轉排序陣列 II(Search in Rotated Sorted Array II)

【LeetCode】#81搜尋旋轉排序陣列 II(Search in Rotated Sorted Array II) 題目描述 假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,0,1,2,2,5,6] 可能變為 [2,5,6,0,0,1,2] )。 編

33. 搜尋旋轉排序陣列

假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。 搜尋一個給定的目標值,如果陣列中存在這個目標值,則

81. 搜尋旋轉排序陣列 II

假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,0,1,2,2,5,6] 可能變為 [2,5,6,0,0,1,2] )。 編寫一個函式來判斷給定的目標值是否存在於陣列中。若