昨晚闲来无事,打开第一题随便看看。结果好家伙。居然好像不会写。(好久之前写的了)忘记了。于是乎花了那么点时间写了下。题目很是简单。不过返回类型要求是vector。
我一开始是返回 return{ i,j } 这样的,显然是不行的。修改了一下,写出来了。算是查缺补漏吧;
思路和很简单 ;找两个相加为要求的数字,并且返回结果只有一个。
那么简单暴力全遍历即可。两个循环的起始是不一样的;
如1 2 3 4 5五个数字,要想全遍历,比如获得和为6的两个数的下标;
那么第一个循环获得6-nums[i]; 第二个j循环从 i + 1 开始;因为前面的已经对比过了,只需要考虑i后面的数;
所以代码是:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int len=nums.size()-1;
vector<int> res;
for(int i=0;i<=len;i++){
int cmp=target-nums[i];
for(int j=i+1;j<=len;j++){
if(nums[j]==cmp){
res.push_back(i);
res.push_back(j);
return res;
}
}
}
return res;
}
};