末备案网站如何做cdn,静态网站开发的目的,wordpress做微信登录页面模板,虞城县住房和城乡建设局网站Problem: 面试题 16.24. 数对和 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法
若本题目直接双循环暴力求解会超时#xff0c;可以利用排序 双指针进行优化#xff0c;具体#xff1a; 1.对原数组进行升序排序#xff1b; 2.双指针指向排好序的数组的头尾(… Problem: 面试题 16.24. 数对和 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法
若本题目直接双循环暴力求解会超时可以利用排序 双指针进行优化具体 1.对原数组进行升序排序 2.双指针指向排好序的数组的头尾(假设索引分别为ij)循环匹配查找while循环循环退出条件i j 2.1 若nums[i] nums[j] target;则将当前索引对应的值添加到集合中并且ij– 2.2 若nums[i] nums[j] target;则i继续查找因为数组是按升序排好序的 2.3 若nums[i] nums[j] target;则j–继续查找 复杂度
时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn);其中 n n n为数组nums的大小 空间复杂度: O ( n ) O(n) O(n) Code
class Solution {
public:/*** Get the sum of all pairs using a double pointer* param nums Given arrays* param target Target number* return vectorvectorint*/vectorvectorint pairSums(vectorint nums, int target) {vectorvectorint result;if (nums.size() 0) {return result;}int i 0;int j nums.size() - 1;sort(nums.begin(), nums.end());while (i j) {if (nums[i] nums[j] target) {vectorint temp;temp.push_back(nums[i]);temp.push_back(nums[j]);result.push_back(temp);i;j--;} else if (nums[i] nums[j] target) {i;} else {j--;}}return result;}
};