Reference code
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
bool find_res = false;
vector<int> res;
for( auto i = nums.begin(); i != nums.end(); i++ ){
int temp = target - *i;
for( auto j = nums.begin(); j != nums.end(); j++ ){
if( *j == temp && j!=i ){
res.push_back( &*i - &*nums.begin() );
res.push_back( &*j - &*nums.begin() );
find_res = true;
}
}
if (find_res) break;
}
return res;
}
};
Essential Tips
- i的类型是 vector<int>::iterator, 即它是向量nums的迭代器,不是nums中的元素。
- *i能够返回迭代器i所指向元素的引用
- &i - &nums.begin()获得i所指元素的下标
- 获得迭代器所指元素下标的另一种方法:(代码目的是将vector中所有元素置为零)
for (vector<int>::size_type ix = 0; ix != ivec.size(); ++ix)
ivec[ix] = 0;
网友评论