class Solution {
public:
vector twoSum(vector& nums, int target) {
int idx = 0;
auto v = nums;
vector plusInfo = {};
for (std::vector::iterator i = v.begin(); i != v.end(); ++i)
{
int value = *i;
int idx2 = idx;
for (std::vector::iterator p = i+1; p != v.end(); ++p)
{
idx2 = idx2 + 1;
int value2 = *p;
int plusValue = value + value2;
if (plusValue == target)
{
plusInfo.push_back(idx);
plusInfo.push_back(idx2);
}
}
idx = idx + 1;
}
return plusInfo;
}
};
上面的是可以的,没有问题的,但其实刚开始的时候我并不是这样写的,这是改过之后的,刚开始写的在leetcode上运行一直报内存错误的错误,我找了一下原因是因为,最后的
v.end() 指向的是列表里面最后一个元素的下一个,我用while遍历的时候访问了这个,所以报错,可以看一下原来的代码
class Solution {
public:
vector twoSum(vector& nums, int target) {
int idx = 0;
auto v = nums;
vector plusInfo = {};
for (std::vector::iterator i = v.begin(); i != v.end(); ++i)
{
int value = *i;
int idx2 = idx;
std::vector::iterator p = i;
//----------------------------------
while(p != v.end())
{
p = p + 1;
idx2 = idx2 + 1;
int value2 = *p;
int plusValue = value + value2;
if (plusValue == target)
{
plusInfo.push_back(idx);
plusInfo.push_back(idx2);
}
}
//----------------------------------
idx = idx + 1;
}
return plusInfo;
}
};
暑期编程PK赛
得CSDN机械键盘等精美礼品!


