leetcode 8
设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。
示例 1:
输入: nums = [5,6,5], target = 11
输出: [[5,6]]
示例 2:
输入: nums = [5,6,5,6], target = 11
输出: [[5,6],[5,6]]
提示:
nums.length <= 100000
class Solution { public: vector<vector<int>> pairSums(vector<int>& nums, int target) { //排序,双指针解法 vector<vector<int>> ans; if(nums.size()<2) return ans; sort(nums.begin(),nums.end()); int i=0,j=nums.size()-1; while(i<j) { int sum=nums[i]+nums[j]; if(sum<target) { i++; } else if(sum>target) { j--; } else{ vector<int> temp; temp.push_back(nums[i]); temp.push_back(nums[j]); ans.push_back(temp); i++; j--; } } return ans; } };
注意:练习双指针的使用。