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. SHELL-反弹shell

    什么是shell? 在我们深入了解发送和接收 shell 的复杂性之前,了解 shell 实际上是什么很重要.用最简单的术语来说,shell 就是我们在与命令行环境 (CLI) 交互时使用的工具.换句 ...

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

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

  3. 等价类计数:Burnside引理和Polya定理 阐述和相关例题

    本人不确保结果正确性. 类似的题集也很多,比如 https://ac.nowcoder.com/acm/contest/27275#question 我做了部分题目的题解 https://www.cn ...

  4. Java面试——不安全的集合类

    Java 中有许多的集合,常用的有List,Set,Queue,Map. 其中 List,Set,Queue都是Collection(集合),List<String>中<>的内 ...

  5. H5-生成二维码

    <div class="poster-qr"> <div class="qrWrapper"> <!-- 放置二维码的容器 --& ...

  6. Javascript 加密解密方法

    本文链接 https://www.cnblogs.com/zichliang/p/17265960.html Javascript 和 我之前发的 python加密 以及 go加密 解密不一样 不需要 ...

  7. vue3 ts 类式写法的mixins

    vue-property-decorator 混入(mixins) // mixins.ts import { Vue } from 'vue-property-decorator' class Mi ...

  8. vue中实现video的动态src绑定

    Vue中实现video的动态src 试了网上的$refs方法发现并没有用 解决方案: 通过require方法  <div>     <video :src='url' @click= ...

  9. [软件测试]Web接口的性能测试

    1 接口响应性能影响因素分析 影响Web接口查询响应性能的重要因素: 1.网络/带宽.服务器硬件资源(CPU.内存.磁盘) 2.用户并发数 3.查询的基础数据集的量级.百万级?亿级?百亿级? 4.查询 ...

  10. STM32启动分析之main函数是怎样跑起来的

    1.MDK目标文件 1)MDK中C程序编译后的结果,即可执行文件数据分类: RAM ZI bss 存储未初始化的或初始化为0的全局变量和静态变量 heap 堆,系统malloc和free操作的内存 s ...