class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> result;
if(nums.empty()){
cout<<"Array is empty"<<endl;
}else{
for(int i=0;i<nums.size();i++){
// for(int j=0;j<nums.size();j++){
// if(i!=j && nums[i]+nums[j]==target ){
// result = {i,j};
// }
int second=target-nums[i];
if(find(nums.begin(),nums.end(),second)!=nums.end() && nums[i]!=second){
int j;
j=distance(ConstIter(nums.begin()),second);
result={i,j};
}
}
}
return result;
}
};
基本上我想要第二个变量的索引和为了减少运行时的复杂性,我不得不删除一个循环leetcode上的两个和问题
我猜您正在掌握的代码是这个
if (nums[i] != second) {
auto pos = find(nums.begin(), nums.end(), second);
if (pos != nums.end())
result = { i, pos - nums.begin() };
}
但是不要认为使用find
代替您自己的循环会提高程序的效率。 find
仅在内部使用循环,因此应该相同。