【力扣-剑指Offer】面试题57.和为s的两个数字

题目描述:
在这里插入图片描述
这是剑指Offer系列中的一道题,标记为简单
限制
在这里插入图片描述
我一开始想先排序再一个一个遍历,就是枚举了。
代码如下(不通过)

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int>ans;
        sort(nums.begin(), nums.end());
        for (int i = 0; i < nums.size(); i++)
        {
            for (int j = i + 1; j < nums.size(); j++)
            {
                if (nums[i] + nums[j] == target)
                {
                    ans.push_back(nums[i]);
                    ans.push_back(nums[j]);
                    return ans;
                }
            }
        }
        return ans;
    }
};

但是这样在最后一个实例中超时😓
于是双指针思路出现
代码(通过):

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {  // 双指针
        vector<int> result;
        int sum, i = 0, j = nums.size()-1;
        while(i < j){
            sum = nums[i]+nums[j];
            if(sum==target){
                result.push_back(nums[i]);
                result.push_back(nums[j]);
                break;
            }
            if(sum>target) j--;
            else i++;
        }
        
        return result;
    }
};

通过了
在这里插入图片描述

posted @ 2020-04-24 18:08  Aeterna_Gungnir  阅读(183)  评论(0编辑  收藏  举报