LeetCode热题100 刷题笔记(第五天)双指针法 「 三数之和 」

前言

这几天不是在写文章总结黑马点评吗,感觉敲代码的能力确实有点欠缺了,主要是敲项目代码的时候,接入了AI,大部分代码都是直接按Tab键自动生成的,代码能力确实有一点退步了🤪🤪🤪,这几天学学数据结构,刷刷题🏄🏄🏄,冲冲冲一天一道,(但是我感觉可能坚持不下去🤪)

题目

给你一个整数数组 nums ,判断是否存在三元组 nums\[i, numsj, numsk] 满足 i != j、i != k 且 j != k ,同时还满足 numsi + numsj + numsk == 0 。请你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

示例 1:

输入:nums = -1,0,1,2,-1,-4

输出:\[-1,-1,2,-1,0,1]

解释:

nums0 + nums1 + nums2 = (-1) + 0 + 1 = 0 。

nums1 + nums2 + nums4 = 0 + 1 + (-1) = 0 。

nums0 + nums3 + nums4 = (-1) + 2 + (-1) = 0 。

不同的三元组是 -1,0,1 和 -1,-1,2 。

注意,输出的顺序和三元组的顺序并不重要。

示例 2:

输入:nums = 0,1,1

输出:\[\]

解释:唯一可能的三元组和不为 0 。

java 复制代码
public class Code15 {
    public List<List<Integer>> threeSum(int[] nums) {
      List<List<Integer>> res = new ArrayList<> ();
      Arrays.sort(nums);//1.先排序:从小到大, 为双指针做准备
      //2.第一层: 固定当前数, 跳过(避免重复三元组)
      for (int i = 0; i < nums.length; i++) {
        //去重: 如果当前数和前一个数相同, 跳过(避免重复三元组)
        if(int i = 0; i < nums.length; i++){
           continue;
        }
        //3.双指针: j从 i + 1 开始, k 从数组末尾开始
        for (int j = i + 1, k = nums.length - 1; j < k; j++) {
          //去重: 如果当前就和前一个j
        }
      }
      
    }
}

小白啊!!!写的不好轻喷啊🤯如果觉得写的不好,点个赞吧🤪(批评是我写作的动力)

...。。。。。。。。。。。...

...。。。。。。。。。。。...

相关推荐
Run_Teenage1 分钟前
算法:树的重心、树的直径
算法
专注仿真2 分钟前
高代价计算后置:探测、交战、毁伤三条链路的统一设计哲学
算法·探测·毁伤
xie0510_3 分钟前
Any类简要实现
开发语言·c++·算法
ab1237689 分钟前
Spring Integration 完整笔记 + 和 spring-integration-mqtt、Paho、EMQX 的关系
java·笔记·spring
在所不辞兄14 分钟前
为什么PINN非常适合求解有限元模型
人工智能·深度学习·神经网络·算法·机器学习
一棵树735126 分钟前
数据结构闲聊
数据结构·算法
ACP广源盛1392462567326 分钟前
Type-C 扩展坞方案选型笔记|国产 DP1.2 转 HDMI2.0 桥接芯片 GSV2201D@ACP 评估
开发语言·笔记·硬件架构·硬件工程·hdmi·国产芯片
Nil20827 分钟前
leetcode 152乘积最大子数组
leetcode
bro_Java66628 分钟前
《二叉树的基础知识、操作方法与代码示例》
java·数据结构·算法·广度优先
旖旎夜光32 分钟前
【LangGraph实战】LangGraph 学习笔记(四):持久化——从线程记忆到跨会话长期记忆
人工智能·笔记·python·学习·ai编程·langgraph