第一题这样做有问题吗 各位大神指教下 我是不是理解错题目意思
发布于 2017-03-31 02:19 1919 次浏览 0 赞 最后一次编辑是 2017-03-31 03:06 来自 笔试面试  
// Time Complexity: O(n), Space Complexity O(1)

pair<int, int> findrange(vector<int> v){
    int start = 0;  // index begins to increase
    int len = 0;  // max length we have got so far
    int i = 0;    
    pair<int, int> res = make_pair(-1,-1); // if no solution, return (-1,-1)
    while(i < v.size()){
        if(i+1 < v.size() && v[i+1] < v[i]){ // decreasing
            i++;
            continue;
        }
        start = i;  // begin to increase
        while(i+1 < v.size() && v[i+1] > v[i]){ // increasing
            i++;
        }
        if(i == v.size()-1) break;
        while(i+1 < v.size() && v[i+1] < v[i]){ // decreasing
            i++;
        }
        if(i - start > len){ // update
            len = i - start;
            res = make_pair(start, i);
        }
        if(i == v.size()-1) break;
    }
    return res;
}
添加回复
回到顶部