致命错误:使用未声明的标识符'ConstIter'

问题描述 投票:0回答:1
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上的两个和问题

c++
1个回答
0
投票

我猜您正在掌握的代码是这个

if (nums[i] != second) {
    auto pos = find(nums.begin(), nums.end(), second);
    if (pos != nums.end())
        result = { i, pos - nums.begin() };
}

但是不要认为使用find代替您自己的循环会提高程序的效率。 find仅在内部使用循环,因此应该相同。

© www.soinside.com 2019 - 2024. All rights reserved.