class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { map<int,int>a;//定义一个map a,就像一数组,(数组下标,值)其中数组下标为有序的,因为其实基于二叉树而来,且数组下标不能重复。 vector<int>b(2,-1);//初始一个值为--11,大小为2的数组 for(int i=0;i<nums.size();i++) { if(a.count(target-nums[i])>0){/*最里面是要找到一个值与nums里i下标对应的值加起来对应的值为目标值的数,在用count看看存不存在,count因为map的数组下标不能重复,所以不为1就为0,一开始是空的,所以要先向下进行*/ b[0]=a[target-nums[i]];//如果if存在,则进入当前的赋值阶段,括号里是与i对应值相加为目标值得值,他作为数组下标对应的值就为下面的函数传进来的nums数组对应的下标,赋值给b b[1]=i;//将这一步所对应的数组下标赋给b,bb中的两个数组就完全了 break;//跳出循环 } a[nums[i]]=i;//因为一开始a是不存在值的,所以要将nums里的值作为下标,i作为对应值传进a,根据for循环一直传 } return b;//返回bb的值 };};
作者:chenlele
链接:https://leetcode-cn.com/problems/two-sum/solution/liang-shu-zhi-he-by-gpe3dbjds1/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 复制链接
- 举报