当前位置: 首页 > news >正文

LeetCode精选100题-【3数之和】-2

这里写自定义目录标题

    • 解法1:
    • 解法2:

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。
示例 1:输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
解释:
nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。
nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。
nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。
不同的三元组是 [-1,0,1][-1,-1,2] 。
注意,输出的顺序和三元组的顺序并不重要。
示例 2:输入:nums = [0,1,1]
输出:[]
解释:唯一可能的三元组和不为 0 。
示例 3:输入:nums = [0,0,0]
输出:[[0,0,0]]
解释:唯一可能的三元组和为 0 。提示:3 <= nums.length <= 3000
-105 <= nums[i] <= 105

三数之和-leetCode

解法1:

暴力三重循环

解法2:

排序 + 双指针

  1. 数组为空或长度<3,直接返回空
  2. 对原数组进行排序
  3. 最外层大循环
  4. 内层双指针

func threeSum(nums []int) [][]int {res := make([][]int, 0)if len(nums) < 3 {return res}sort.Ints(nums)for i := 0; i < len(nums); i++ {if nums[i] > 0 { // 第一层遍历,如果第一个值都大于0了,直接返回已有的结果return res}if i > 0 && nums[i] == nums[i-1] { // 关键,排序后,为了不能有重复元祖continue // 注意这地方不能直接i++,要重新进入循环,因为可能会有2个以上的重复值}L := i + 1R := len(nums) - 1for L < R {if nums[i]+nums[L]+nums[R] == 0 {res = append(res, []int{nums[i], nums[L], nums[R]})for L < R && nums[L] == nums[L+1] { // 去重L++}for L < R && nums[R] == nums[R-1] { // 去重R--}L++R--} else if nums[i]+nums[L]+nums[R] > 0 {R--} else {L++}}}return res
}
http://www.lryc.cn/news/168984.html

相关文章:

  • springboot集成mybatis-plus
  • 再想一想GPT
  • Blazor前后端框架Known-V1.2.15
  • Tomcat 的部署和优化
  • 后端中间件安装与启动(Redis、Nginx、Nacos、Kafka)
  • 【电子元件】常用电子元器件的识别之电阻器
  • 指针和数组笔试题讲解(2)
  • MapReduce YARN 的部署
  • vue 引入zTree
  • 链队列的基本操作(带头结点,不带头结点)
  • 深入学习 Redis Cluster - 基于 Docker、DockerCompose 搭建 Redis 集群,处理故障、扩容方案
  • C现代方法(第3、4章)笔记
  • R语言绘制染色体变异位置分布图,RIdeogram包
  • Vue知识系列(7)每天10个小知识点
  • 5分钟就能实现的API监控,有什么理由不做呢?
  • Jmeter引入外部jar包以满足加密数据的Post请求
  • 了解冒泡排序
  • 群辉 Synology NAS Docker 安装 RustDesk-server 自建服务器只要一个容器
  • 为什么要有override
  • Linux界的老古董
  • 安卓逆向 - Xposed入门教程
  • 【嵌入式】2024届校招岗位汇总
  • Docker搭建ELK日志采集服务及Kibana可视化图表展示
  • SpringBoot结合MyBatis实现多数据源配置
  • 单个vue echarts页面
  • 【web开发】6、Django(1)
  • 第29节-PhotoShop基础课程-滤镜库
  • 空间(蓝桥杯)
  • 蓝桥杯2023年第十四届省赛真题-更小的数--题解
  • SpringBoot详解