题目考察的知识点:双指针
题目解答方法的文字分析:暴力遍历,求出每种可能,符合条件则保留;可以优化一下,如:a[i]>target,则break;a[i]+b[j]>target,则break。
本题解析所用的编程语言:c++
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param target int整型 * @return int整型vector<vector<>> */ vector<vector<int> > fourSum(vector<int>& nums, int target) { // write code here vector<vector<int>> ret; sort(nums.begin(), nums.end()); for (int a = 0; a < nums.size() - 3; ++a) for (int b = a + 1; b < nums.size() - 2; ++b) for (int c = b + 1; c < nums.size() - 1; ++c) for (int d = c + 1; d < nums.size(); ++d) { vector<int> t(4); t[0] = nums[a],t[1] = nums[b],t[2] = nums[c],t[3] = nums[d]; if (t[0] + t[1] + t[2] + t[3] == target) if (ret.empty() || ret[ret.size() - 1] != t) ret.push_back(t); else if (t[0] + t[1] + t[2] + t[3] > target) break; } return ret; } };