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

我的leetcode hot100之行(持续更新)

1. 两数之和

题目:在数组中找到两个数,它们的和等于目标值,返回下标
案例:给定数组 nums = [2,7,11,15],目标值 target = 9
效果:2 + 7 = 9 → 返回 [0, 1]
核心:用目标值减去当前数,看差值是否在剩余数组中

nums = [2, 7, 11, 15] target = 9 for i in range(len(nums)): res = target - nums[i] # 需要的另一个数 if res in nums[i + 1:]: # 在剩余部分查找 # index(res)返回在切片中的位置,加上偏移量得到原数组下标 print(i, nums[i + 1:].index(res) + i + 1)

2. 字母异位词分组

题目:将字母组成相同的单词分到同一组
案例:输入 strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
效果:[["bat"], ["nat","tan"], ["ate","eat","tea"]]
核心:排序后的字符串作为字典的键

strs = ["eat", "tea", "tan", "ate", "nat", "bat"] sorted_dict = {} for s in strs: sorted_strs = ''.join(sorted(s)) # 排序后作为唯一标识 if sorted_strs not in sorted_dict: sorted_dict[sorted_strs] = [s] # 新建列表 else: sorted_dict[sorted_strs].append(s) # 追加到已有列表 print(list(sorted_dict.values()))

3. 最长连续序列

题目:找出数字连续的最长序列长度(不要求在原数组中连续)
案例:输入 nums = [0,3,7,2,5,8,4,6,0,1]
效果:0,1,2,3,4,5,6,7,8 连续 → 长度 9
核心:只从每个连续序列的第一个数开始计数

nums = [0, 3, 7, 2, 5, 8, 4, 6, 0, 1] nums1 = set(sorted(nums)) # 去重并排序 array = [] for i in nums1: if i - 1 not in nums1: # 找到连续序列的起点 count = 1 while i + 1 in nums1: # 向后找连续的数 count += 1 i += 1 array.append(count) print(max(array))

4. 相交链表

题目:找到两个链表相交的起始节点,没有则返回null
案例
A: a1 → a2 → a3 → a4

c3 → c4

B: b1 → b2 → b3
效果:返回 c3
核心:浪漫相遇 - 两个指针走完自己的路再走对方的路

def get_cross_node(headA, headB): A, B = headA, headB while A != B: # 相遇时退出 # A走自己的路,到头了就走B的路 A = A.next if A else headB # B走自己的路,到头了就走A的路 B = B.next if B else headA return A # 要么相交点,要么null

为什么浪漫:就像两个人,走过彼此来时的路,最终相遇

5. 反转链表

题目:反转单链表
案例:原链表 1 → 2 → 3 → None
效果:None ← 1 ← 2 ← 3
核心:三个指针 - cur当前节点,pre前一个节点,next下一个节点

def reverse_list(head): cur = head pre = None while cur: next = cur.next # 先保存下一个节点 cur.next = pre # 当前节点指向前一个节点 pre = cur # pre移动到当前节点 cur = next # cur移动到下一个节点 return pre # pre就是新头节点

6. 回文链表

题目:判断链表是否正反读都一样
案例:链表 1 → 2 → 2 → 1
效果:正着读1221,反着读1221 → true
核心:转为数组,比较数组和它的反转

def is_palindrome(head): vals = [] cur = head while cur: # 遍历链表存入数组 vals.append(cur.val) cur = cur.next return vals == vals[::-1] # 比较数组和它的反转

7. 环形链表

题目:判断链表中是否有环
案例:链表 1 → 2 → 3 → 4 → 5 → 2(指向节点2)
效果:有环 → true
核心:快慢指针 - 龟兔赛跑,兔子绕圈追上乌龟

def has_cycle(head): slow = fast = head while fast and fast.next: # 快指针能走两步的前提 slow = slow.next # 慢指针走一步 fast = fast.next.next # 快指针走两步 if slow == fast: # 相遇则有环 return True return False # 走到头则无环

关键:每走一步,快指针会追上慢指针一步

8. 合并两个有序链表

题目:合并两个升序链表为一个新升序链表
案例:l1 = 1→2→4,l2 = 1→3→4
效果:1→1→2→3→4→4
核心:虚拟头节点 + 双指针比较

def merge_two_lists(l1, l2): dummy = cur = ListNode(0) # 虚拟头节点,简化操作 # 两个链表都还有节点时,比较大小 while l1 and l2: if l1.val < l2.val: cur.next = l1 l1 = l1.next else: cur.next = l2 l2 = l2.next cur = cur.next # 处理剩余节点(其中一个链表已空) if l1: cur.next = l1 if l2: cur.next = l2 return dummy.next # 跳过虚拟头节点
http://www.jsqmd.com/news/465879/

相关文章:

  • 天虹提货券还能变现?揭秘隐藏的回收渠道与高价技巧 - 团团收购物卡回收
  • 2026年滨州AI关键词优化服务商综合评测与选购指南 - 2026年企业推荐榜
  • 2026年视光中心加盟市场盘点与五家实力品牌解析 - 2026年企业推荐榜
  • 拉丁超立方采样(LHS)+二阶多项式回归响应面建模+非线性规划和遗传算法多目标优化求解,MATLAB代码
  • Springboot项目中线程池使用整理
  • 探索2026年连云港值得关注的五家轨道小火车供应商 - 2026年企业推荐榜
  • 助眠神器!一款开源无广告的安卓白噪音应用!
  • 2026冲刺用!千笔AI,最强的AI论文软件
  • Spring如何处理线程并发问题
  • 官方信息:CAIE认证全年考试时间表及产品经理专属备考时间轴
  • 2026年pp回料颗粒生产厂家经验分享:谁在用稳定品质做长期生意? - 企师傅推荐官
  • 智慧旅游景区管理系统 可视化Python django flask
  • Java小白如何在互联网大厂面试中脱颖而出——从Spring Boot到微服务的技术通关
  • 大数据领域Doris的多模态数据处理能力
  • 官方说明:AI工程师认证为科研人员提供的学习支持及线上/线下考试模式说明
  • 2026年,探寻靠谱且产品优质的信号发生器生产厂家 - 品牌推荐大师
  • AI教材编写高效解决方案,低查重成果让你的教材脱颖而出!
  • 低查重AI教材写作攻略:借助AI工具高效完成教材编写任务
  • C++静态多态技术
  • 谷歌建站公司终极指南:2026年AI时代,你的“数字门面”应该交给谁? - 品牌推荐大师1
  • 2026年初至今杭州GEO优化平台权威盘点与推荐 - 2026年企业推荐榜
  • PD-1抗体如何拓展抗病毒治疗新 frontier?
  • 2026年一体化污水处理设备厂家选购指南 - 2026年企业推荐榜
  • 2026年第一季度优质150挖机出租厂家综合测评与推荐 - 2026年企业推荐榜
  • 用PS CC2017实现视频面部优化的新突破
  • AI教材编写攻略:低查重工具在手,优质教材轻松拥有
  • 2026年3月武汉房屋检测服务商综合选购指南 - 2026年企业推荐榜
  • 简单逆向Java程序
  • OptiSystem应用:四波混频(FWM)
  • AI教材生成新趋势!低查重率教材编写,这些工具你不能错过!