167. Two Sum II - Input array is sorted(重)

这道题需要一个思路上的转变。。。嗯。。。也没太多好说的,注意可能有负数,多想几种极端情况吧,好好看看人家的思路。

我的解法

过不了最后一个数据,{0000000.....23....99999999}5,也过不了其它很多情况。

class Solution {
public:
    vector<int> twoSum(vector<int>& numbers, int target) {
        vector<int> output;
        for (int m = 0; m < numbers.size(); m ++)
            for (int n = m + 1 ; n < numbers.size(); n ++)
                if (numbers[m] + numbers[n] == target){
                    output.push_back(m + 1);
                    output.push_back(n + 1);
                }
        return output;
    }
};

人家的解法

class Solution {
public:
    vector<int> twoSum(vector<int>& numbers, int target) {
    int lo=0, hi=numbers.size()-1;
    while (numbers[lo]+numbers[hi]!=target){
        if (numbers[lo]+numbers[hi]<target){
            lo++;
        } else {
            hi--;
        }
    }
    return vector<int>({lo+1,hi+1});
}
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容