(查詢)找到陣列中的指定值得起始和結束位置

Kobe10發表於2017-02-03
  • 題目:
    給定整數的排序陣列,找到給定目標值的起始和結束位置。
    
    您的演算法的執行時複雜性必須是O(log n)的順序。
    
    如果在陣列中找不到目標,則返回[-1,-1]。
    
    例如,
    給定[5,7,7,8,8,10]和目標值8,
    return [34]。

     

  • 思路:這個題目直接使用容器儲存出現查詢元素的位置。取出第一個和最後一個即可。
  • 程式碼
    class Solution {
    public:
        vector<int> searchRange(int A[], int n, int target) {
            vector<int> res;
            vector<int> v;
            int first = 0, last = 0;
            for (int i=0; i<n;i ++){
                if (target == A[i]){
                    res.push_back(i);
                }
            }
            if (res.size() == 0){
                first = -1;
                last = -1;
            }else if (res.size() == 1){
                first = res[0];
                last = res[0];
            }
            else{
                first = res.front();
                last = res[res.size()-1];
            }
            v.push_back(first);
            v.push_back(last);
            return v;
        }
    };

     

相關文章