LeetCode——(1)两数之和题解

    技术2022-07-10  147

    LeetCode——(1)两数之和题解

    github地址:github.com/king-wk/leetcode

    第一题是比较容易的遍历比较题,只需要稍稍注意元素不要重复使用就可以啦。

    题目描述

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

    你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 来源:力扣(LeetCode)

    示例

    解题思路

    遍历nums中的每一个数,目标值减去该数即得到差,再将差与该数之前的数进行比对,如果有符合情况,输出两个数的下标即可。

    解题代码

    class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int>record;//记录数据和下标 for(int i=0; i < nums.size(); i++) { int difference = target - nums[i];//做差 if(record.find(difference) != record.end()){//如果target与该数的差能在该数之前的数中找到 int result[]={record[difference], i};//记录符合条件的两数的下标 return vector<int>(result, result+2); } record[nums[i]]=i; } return{}; } };

    也可以不采用result数组记录下标,直接将下标插入要返回的vector中

    class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int>record; vector<int>result; for(int i=0; i < nums.size(); i++) { int difference = target - nums[i]; if(record.find(difference) != record.end()){ result.push_back(record[difference]);//直接通过push_back函数插入即可 result.push_back(i); return result; } record[nums[i]]=i; } return{}; } };

    如果觉得文章对你有用,欢迎关注❤️、评论📝、点赞👍! 也可以follow我的GitHub账号,里面有更多惊喜哦,等着各位小主的star★呀

    Processed: 0.009, SQL: 9