while (right > left) { long long int tmp = nums[i] + nums[k] + nums[left] + nums[right]if (tmp == target){为啥报错?
时间: 2024-06-03 10:07:49 浏览: 3
这段代码缺少了运算符,应该是要进行数值的加法或者乘法,正确的代码应该为:
while (right > left) {
long long int tmp = nums[i] + nums[k] + nums[left] + nums[right];
if (tmp == target) {
// do something
}
// update left and right
if (tmp < target) {
left++;
} else {
right--;
}
}
其中的加号表示对四个数值进行相加操作。
相关问题
while (right > left) { long_long int tmp = nums[i] + nums[k] + nums[left] + nums[right]if (tmp == target){为啥报错?
这段代码中缺乏分号,应该改为:
while (right > left) {
long long int tmp = nums[i] + nums[k] + nums[left] + nums[right];
if (tmp == target) {
// do something
}
}
其中加号表示将四个数相加。这样代码就不会报错了。
class Solution{ public: vector<vector<int>> threeSum(vector<int>& nums){ sort(nums.begin(),nums.end()); for(int i=0;nums[i]<=0;i++){ if(nums[i]==0){ int j=i; while(j<nums.size()-1&&nums[j+1]==0) j++; if(j-i>2) { nums.erase(nums.begin()+i,nums.begin()+j-2); }; break; } } vector<vector<int>> ans; for (int i = 0; i < nums.size() - 2;i++) { for (int j = i+1;j<nums.size()-1;j++) { for (int k = j + 1;k<nums.size() ; k++) { if (nums[i] + nums[j] + nums[k] == 0) { vector<int> lt; lt.push_back(nums[i]); lt.push_back(nums[j]); lt.push_back(nums[k]); ans.push_back(lt); } while(k<nums.size()-1&&nums[k]==nums[k+1]) k++; } while(j<nums.size()-1&&nums[j]==nums[j+1]) j++; if(j<nums.size()-1&&nums[j]==nums[j+1]) break; } while(i<nums.size()-2&&nums[i]==nums[i+1]) i++; if(i<nums.size()-2&&nums[i]==nums[i+2]) break; } return ans; } };
nums) { vector<vector<int>> res; int n = nums.size(); sort(nums.begin(), nums.end()); for(int i = 0; i < n-2; i++) { if(i > 0 && nums[i] == nums[i-1]) continue; int l = i+1, r = n-1; while(l < r) { int sum = nums[i] + nums[l] + nums[r]; if(sum == 0) { res.push_back({nums[i], nums[l], nums[r]}); while(l < r && nums[l] == nums[l+1]) l++; while(l < r && nums[r] == nums[r-1]) r--; l++; r--; } else if(sum < 0) l++; else r--; } } return res; }}
请解释一下这个Solution的意思。
A: 这是一个三数之和的问题,输入为一个vector<int> nums,输出是所有和为0的不重复三元组,每个三元组中的元素为nums中的数,且不重复,也不可重复使用。这里用了双指针的方法,对nums进行排序后,枚举一个数nums[i],然后用双指针方法寻找另外两个数,使得三个数的和为0。为了去除重复的情况,其中一个指针移动过程中,需要判断一下与前面的数是否重复。如果找到了符合条件的三元组,将其加入到结果集res中。最后返回所有符合条件的三元组。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)