LeetCode Hot100刷题日志D1

发布时间:2026/10/13 9:06:38
LeetCode Hot100刷题日志D1 1.两数之和给定一个整数数组nums和一个整数目标值target请你在该数组中找出和为目标值target的那两个整数并返回它们的数组下标。你可以假设每种输入只会对应一个答案并且你不能使用两次相同的元素。你可以按任意顺序返回答案。先是看了灵神的思路用到了相向双指针的夹逼思想。整体思路是左右指针分别指向数组首尾向中间夹逼。和大了右指针左移和小了左指针右移。但是此算法仅适用于已经有序的数组。提交题解的时候未发现题目已经有所改变已经变为无序于是第一次提交失败。后面看题解发现有哈希的做法看了一遍原理后想留着后面系统学习哈希算法时再使用于是将目标转为暴力破解。暴力破解用的是双循环时间复杂度为O(n*n)。15.三数之和给你一个整数数组nums判断是否存在三元组[nums[i], nums[j], nums[k]]满足i ! j、i ! k且j ! k同时还满足nums[i] nums[j] nums[k] 0。请你返回所有和为0且不重复的三元组。注意答案中不可以包含重复的三元组。先是顺着前面“两数之和”相向双指针的夹逼思想这道题的整体思路是外层套一个 for 循环来固定第一个数然后在剩下的区间里用左右指针去寻找和为 0 的另外两个数。在写的时候架上了剪枝优化后面的数加起来都大于 0 就直接 break加上最大的数还小于 0 就直接 continue。但是漏掉了一个最致命的前提双指针能正确移动依赖于数组是有序的原题给的数组是无序的导致第一版代码逻辑直接崩溃。加上nums.sort()排序后再次提交发现输出结果里包含了大量重复的三元组。排查后发现自己在寻找完一个正确组合后去重逻辑错用了if语句。if只能跳过两个挨着的重复数字遇到连续多个重复数字比如连续三个 1就失效了。于是立刻把if改成了while循环。换成while提交后发现IndexError数组越界报错。最后发现在内部while跳过重复项时忘了加上j k的安全边界保护导致左指针一路狂奔不仅越过了右指针还冲出了数组外。改正后AC。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询