15.3sum(Nsum总结)

如果不用hashmap解决2sum,而是把2sum看成nSum中的一部分,那么就需要用two pointers来解决问题。

2sum伪代码:

1. 先对给定的数组进行排序

2. walker指第一个元素,runner指最后一个元素

3.当walker小于runner:

  1)如果walker和runner的和等于target,那么:

    (1)如果只需要一对解,记录答案,break

    (2)如果需要所有解,那么walker++, runner--

  2) else如果和小于target,walker++

  3) else runner++

4.返回结果

算法时间复杂度

1. 2sum的时间复杂度

排序的复杂度是O(NlogN), 然后再就是最多从头到尾走一遍,所以是O(N), 所以复杂度是O(N+NlogN),所以是O(N)

2. 3sum时间复杂度是

排序的时间复杂度O(NLogN), 在对于每一个数组做2sum,但是这个时候的2sum不需要排序,所以这个2sum是O(N),所以这部分的时间复杂度是O(N^2)

所以总时间复杂度是O(N^2+NLogN)= O(N^2)

参考链接: http://blog.csdn.net/doc_sgl/article/details/12462151#comments 感谢原博主!

时间: 2024-12-16 16:57:44

15.3sum(Nsum总结)的相关文章

1. Two Sum&&15. 3Sum&&18. 4Sum

题目: 1. Two Sum Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice. Given nums = [2, 7, 1

Leetcode之15. 3Sum (medium)

15. 3Sum (medium) 描述 Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. Example

[LeetCode] 15. 3Sum

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. For example, given array S = [-1,

【leetcode】15. 3Sum

题目描述: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. 解题分析: 这道题注意一下几点即可: 1,先固定前两个数的位置,移动第三个数,这样的查找方式不会有数字组合的遗漏: 2,要考虑到数组元素有重复的情况下的处理. 3,若先为数组排

LeetCode 15. 3Sum(三数之和)

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. For example, given array S = [-1,

15. 3Sum java solutions

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. For example, given array S = [-1,

leetcode 15. 3Sum 双指针

题目链接 给n个数, 找出三个数相加结果为0的所有的组, 不可重复. 用双指针的思想,O(n^2)暴力的找, 注意判重复. 1 class Solution { 2 public: 3 vector<vector<int>> threeSum(vector<int>& nums) { 4 int sz = nums.size(); 5 vector <vector<int> > ans; 6 vector <int> tmp;

[LeetCode][15]3Sum解析与快速排序算法-Java实现

Q: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. For example, given array S = [-

leetCode 15. 3Sum (3个数) 解题思路和方法

3Sum Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c) The