C/C++教程

leetcode 1. 两数之和

本文主要是介绍leetcode 1. 两数之和,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 思路:

排序+双指针

如果返回的数,排序后用双指针可以直接做

由于返回的是下标,为了保存下标信息另开了一个数组,这样排序后用双指针返回对应下标即可

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
vector<int>res;
vector<pair<int,int>>num;
pair<int,int>temp;
for(int i=0;i<nums.size();i++)
{
    temp.first=nums[i];
    temp.second=i;
    num.push_back(temp);
}
sort(num.begin(),num.end());
int i=0;
int j=nums.size()-1;
while(i<j)
{
    if(num[i].first+num[j].first<target)
    {
        i++;
    }
    else if(num[i].first+num[j].first>target)
    {
        j--;
    }
    else
    {
        res.push_back(num[i].second);
        res.push_back(num[j].second);
        break;
    }
}
return res;
    }
};

这篇关于leetcode 1. 两数之和的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!