【问题标题】:3 sum closest with an error: expected unqualified-id before string constant3 最接近错误的总和:字符串常量之前的预期 unqualified-id
【发布时间】:2017-12-23 21:28:27
【问题描述】:

我检查了所有的半逗号,所以应该不是问题,谁能帮我解决这个 Leetcode 的问题?

    class Solution {
    public:
    int threeSumClosest(vector<int>& nums, int target) {
        int res=INT_MAX;

        std::sort(nums.begin(), nums.end());

        for(int i = 0; i<nums.size(); i++){
            //create target minus nums
            int qminus = target-nums[i];
            int closest = INT_MAX;
            //hashtable[nums[i]]=minus;

            //
            int front = i+1;
            int back = nums.size()-1;

            while(front<back){
                int sum = nums[front]+nums[back];

                if(sum<qminus)  {front++;
                                closest = minus - sum;
                                res = min(closest, res);
                               }
                else if(sum>qminus) {back--;
                                    closest = minus - sum;
                                    res = min(closest,res);
                                   }
                else res=0;
            }
            while(front<back && nums[i+1]==nums[i]) i++;
        }
        return res;

};

我在字符串常量之前收到了一个缺少 unqualified-id 的错误,谁能帮我解决这个错误,谢谢!

【问题讨论】:

    标签: c++ c++11 compiler-errors syntax-error


    【解决方案1】:

    您缺少右括号,并且没有名为 minus 的变量:

    class Solution {
      public:
      int threeSumClosest(vector<int>& nums, int target) {
        int res=INT_MAX;
    
        std::sort(nums.begin(), nums.end());
    
        for(int i = 0; i<nums.size(); i++){
            //create target minus nums
            int qminus = target-nums[i];
            int closest = INT_MAX;
            //hashtable[nums[i]]=minus;
    
            //
            int front = i+1;
            int back = nums.size()-1;
    
            while(front<back){
                int sum = nums[front]+nums[back];
    
                if(sum<qminus)  {front++;
                                closest = qminus - sum; // did you mean qminus?
                                res = min(closest, res);
                               }
                else if(sum>qminus) {back--;
                                    closest = qminus - sum; // did you mean qminus?
                                    res = min(closest,res);
                                   }
                else res=0;
            }
            while(front<back && nums[i+1]==nums[i]) i++;
        }
        return res;
      } // missing this bracket
    };
    

    Leetcode 经常为编译器错误指定行号,因此您下次应该能够使用它来更深入地了解您的问题。

    【讨论】:

      猜你喜欢
      • 2023-03-07
      • 2012-08-03
      • 1970-01-01
      • 2013-07-06
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      • 2011-01-15
      相关资源
      最近更新 更多