剑指 Offer II 007. 数组中和为 0 的三个数
题目:剑指 Offer II 007. 数组中和为 0 的三个数 描述:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a ,b ,c ,使得 a + b + c = 0 ?请找出所有和为 0 且 不重复 的三元组。
思路:
1、先排序,然后用双指针找到目标值,用set去重。
原代码##
class Solution { public: vector<vector<int>> threeSum(vector<int>& nums) { int n = nums.size(); if (n < 3) return { }; sort(nums.begin(), nums.end()); if (nums[0] > 0) return { }; set<vector<int>> s; for (int i = 1; i < n - 1; ++i) { int l = 0, r = n - 1; while (l < i && r > i) { int temp = nums[l] + nums[i] + nums[r]; if (temp < 0) l++; else if (temp > 0) r--; else { s.insert({ nums[l], nums[i], nums[r]}); l++; r--; } } } vector<vector<int>> ans(s.begin(), s.end()); return ans; } };
下一篇:
拟合程度的评估--判定系数