2021-09-01:三数之和。给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。力扣15。

福大大 答案2021-09-01:

二和问题加强。二和问题是双指针。
时间复杂度:O(N**2)。
空间复杂度:排序的。

代码用golang编写。代码如下:

package main

import (
"fmt"
"sort"
) func main() {
nums := []int{-1, 0, 1, 2, -1, -4}
ret := threeSum(nums)
fmt.Println(ret)
} func threeSum(nums []int) [][]int {
sort.Ints(nums)
N := len(nums)
ans := make([][]int, 0)
for i := N - 1; i > 1; i-- { // 三元组最后一个数,是arr[i] 之前....二元组 + arr[i]
if i == N-1 || nums[i] != nums[i+1] {
nexts := twoSum(nums, i-1, -nums[i])
for _, cur := range nexts {
cur = append(cur, nums[i])
ans = append(ans, cur)
}
}
}
return ans
} // nums[0...end]这个范围上,有多少个不同二元组,相加==target,全返回
// {-1,5} K = 4
// {1, 3}
func twoSum(nums []int, end int, target int) [][]int {
L := 0
R := end
ans := make([][]int, 0)
for L < R {
if nums[L]+nums[R] > target {
R--
} else if nums[L]+nums[R] < target {
L++
} else { // nums[L] + nums[R] == target
if L == 0 || nums[L-1] != nums[L] {
cur := make([]int, 0)
cur = append(cur, nums[L], nums[R])
ans = append(ans, cur)
}
L++
}
}
return ans
} func findPairs(nums []int, k int) int {
sort.Ints(nums)
left := 0
right := 1
result := 0
for left < len(nums) && right < len(nums) {
if left == right || nums[right]-nums[left] < k {
right++
} else if nums[right]-nums[left] > k {
left++
} else {
left++
result++
for left < len(nums) && nums[left] == nums[left-1] {
left++
}
}
}
return result
}

执行结果如下:


左神java代码

2021-09-01:三数之和。给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。的更多相关文章

  1. 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组

    var threeSum = function(nums) {let ans = [];const len = nums.length;if(nums == null || len < 3) r ...

  2. 【Leetcode】两数之和,三数之和,四数之和

    两数之和 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这 ...

  3. 【LeetCode】15.三数之和

    题目描述 1. 三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意: ...

  4. LeetCode15. 三数之和

    15. 三数之和 描述 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中 ...

  5. lintcode: 三数之和II

    题目 三数之和 II 给一个包含n个整数的数组S, 找到和与给定整数target最接近的三元组,返回这三个数的和. 样例 例如S = .  和最接近1的三元组是 -1 + 2 + 1 = 2. 注意 ...

  6. Leetcode题库——16.最接近的三数之和

    @author: ZZQ @software: PyCharm @file: threeSumClosest.py @time: 2018/10/14 20:28 说明:最接近的三数之和. 给定一个包 ...

  7. 【LeetCode】15、三数之和为0

    题目等级:3Sum(Medium) 题目描述: Given an array nums of n integers, are there elements a, b, c in nums such t ...

  8. 【每日一题】【位于index后的双指针&排序数组】15. 三数之和/NC54 数组中相加和为0的三元组-211117/220206

    给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组. 注意:答案中不可以包含重复的三 ...

  9. LeetCode:两数之和、三数之和、四数之和

    LeetCode:两数之和.三数之和.四数之和 多数之和问题,利用哈希集合减少时间复杂度以及多指针收缩窗口的巧妙解法 No.1 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在 ...

  10. LeetCode#15 | Three Sum 三数之和

    一.题目 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意:答案中不可以包含 ...

随机推荐

  1. 201971010110-高杨 实验三 结对项目—《{0-1}KP 实例数据集算法实验平台》项目报告

    项目内容 项目 内容 班级博客链接 https://edu.cnblogs.com/campus/xbsf/2019nwnucs 作业要求 https://edu.cnblogs.com/campus ...

  2. python和java语法对比

      python java 不同的关键字 except,nolocal,as,assert,async,pass ,await,from,raise,global,in,del,with,lambda ...

  3. 使用Git进行版本控制,不同的项目怎么设置不同的提交用户名和邮箱呢?

    1.全局设置用户名和邮箱 因为平时除了开发公司项目还会写自己的项目或者去维护开源项目,一般情况下,公司会要求提交代码时使用自己的真名或者拼音和公司邮箱,以前就只会设置全局用户名或邮箱如下 git co ...

  4. Markdown 利用HTML进行优雅排版

    Markdown 利用HTML进行优雅排版 我在使用Markdown整理文档的时候发现,Markdown本身对文本格式的排版很单一,只有编号.字体加粗.固定标题格式等一些基础的排版,使用不够灵活,好在 ...

  5. Day05笔记

    01.数组类(了解) 1.目的:设计一个类,该类有数组的功能,可以存储数据,可以删除修改数据 2.设计核心数据 1.属性:指针(指向堆区空间),数组实际存储的元素个数,数组容量 2.方法:构造(开辟堆 ...

  6. 一起来试玩!在线可编程交互的实时音视频 Web SDK 入门教程

    在与开发者长期的沟通中,我们发现,尽管声网为开发者提供了丰富翔实的 SDK 技术文档,但对于初次接触声网 SDK 的开发者来说,在第一眼看到文档的时候,可能会被大量新概念和复杂的 API 接口淹没.S ...

  7. 小霸王、红白机、FC游戏、街机游戏在线玩的网站

    前段时间小笨就想做一个红白机在线玩的网站,作为90后,也玩过不少小霸王fc游戏,于是花了两个星期时间做了出来.前端界面略丑,因为小笨不是专做前端的,就将就一下吧,哈哈!网站暂时添加了数款怀旧游戏,包括 ...

  8. [WEB13] ctf.show_web13

    [WEB13] ctf.show_web13 .user.ini绕过 文件上传的要求: 文件的大小要小于24,并且对名字的,后缀的长度都有要求,后缀和名字都不可以包含php的情况下,需要上传一句话木马 ...

  9. Excel批量加粗关键词(宏)

    代码如下: Sub 批量加粗() Dim a As Range Dim b As String b = InputBox("请输入要加粗的关键字") For Each a In A ...

  10. 修改host文件

    host文件路径 Windows 系统:C:\Windows\System32\drivers\etc\hosts Linux 系统:/etc/hosts Mac(苹果电脑)系统:/etc/hosts ...