这是第一篇博客2333333
这是leetcode放在首页的第一道题目
问题描述:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
解题思路:
嗯,一眼下去就是一个二重循环:
<pre name="code" class="cpp">class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> res;
int len=nums.size();
bool f=0;
for(int i=0;i<len;++i){
for(int j=0;j<len;++j){
if((nums[i]+nums[j]==target)){
res.push_back(i);
res.push_back(j);
f=true;
break;
}
}
if(f)
break;
}
return res;
}
};
hhhhhh,然后就直接交了,当然这肯定是错的。因为没有考虑到 i=j的情况
然后在if的条件判断里面加一个 &&(i!=j)
嗯,过了
后来看看,第二轮循环没必要都全部遍历吖,好的改一下 int j=i+1, 顺便使得了i!=j
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> res;
int len=nums.size();
bool f=0;
for(int i=0;i<len;++i){
for(int j=i+1;j<len;++j){
if((nums[i]+nums[j]==target)){
res.push_back(i);
res.push_back(j);
f=true;
break;
}
}
if(f)
break;
}
return res;
}
};
