LeetCode 秋招冲刺手感恢复版 · 点击题目行标记状态

总进度 0/65
⚠️ 每道题:关掉题解 → 白纸/空编辑器手写 → 跑通所有用例 → 才算过。
你不是初学者,你是手生。手生的唯一解药是手写,不是看题解。看懂题解会给你"我会了"的错觉,但面试是让你当场写,不是当场看。
独立写出并跑通 🔴 卡住看了提示 完全不会 🔥 华为/大厂机试高频
Python 手写提醒三个月没写,这些最容易忘
# 1. 哈希表 / 计数 from collections import defaultdict, Counter d = defaultdict(int) # d[k] 默认 0,不用先判断 key 在不在 cnt = Counter(nums) # 直接统计词频,返回 {元素: 次数} # 2. 队列(BFS 必用,别用 list.pop(0),那是 O(n)) from collections import deque q = deque() q.append(x); q.popleft() # 两端都是 O(1) # 3. 堆(默认小顶堆,要大顶堆就存负数) import heapq heapq.heappush(h, x); heapq.heappop(h) heapq.heapify(nums) # 原地建堆 # 大顶堆:push 时存 -x,pop 出来再取负 # 4. 排序带 key arr.sort(key=lambda x: (x[0], -x[1])) # 第一维升序,第二维降序 intervals.sort(key=lambda x: x[0]) # 区间按左端点 # 5. 二分(手写模板,左闭右闭,固定这一套别换) def bisect(nums, target): l, r = 0, len(nums) - 1 while l <= r: mid = (l + r) // 2 if nums[mid] == target: return mid elif nums[mid] < target: l = mid + 1 else: r = mid - 1 return l # 插入位置 # 或直接用标准库 import bisect bisect.bisect_left(nums, x) # 第一个 >= x 的位置 bisect.bisect_right(nums, x) # 第一个 > x 的位置 # 6. 链表节点(自己写时的定义) class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next # 反转链表三指针模板(背下来): def reverse(head): prev = None while head: nxt = head.next head.next = prev prev = head head = nxt return prev # 7. 二叉树 DFS 递归骨架 def dfs(node): if not node: return # 前序位置 dfs(node.left) # 中序位置 dfs(node.right) # 后序位置 # 8. 网格 DFS 骨架(岛屿类,华为高频) def dfs(grid, i, j): if i < 0 or i >= len(grid) or j < 0 or j >= len(grid[0]) or grid[i][j] != '1': return grid[i][j] = '0' # 标记已访问(原地改,省 visited 数组) dfs(grid, i+1, j); dfs(grid, i-1, j) dfs(grid, i, j+1); dfs(grid, i, j-1) # 9. 回溯骨架 def backtrack(path, choices): if 满足结束条件: res.append(path[:]) # 注意是拷贝 path[:],不是 path return for c in choices: path.append(c) # 选择 backtrack(path, 新choices) path.pop() # 撤销 # 10. 无穷大 / 常用 float('inf'), float('-inf') ans = [[0]*n for _ in range(m)] # 二维数组,别用 [[0]*n]*m(浅拷贝坑!)
⚠️ 最后一个 Python 坑[[0]*n]*m 是错的,每一行是同一个引用。二维数组永远用 [[0]*n for _ in range(m)]
进度速览刷到阶段二结束(约 45 题),大厂面试算法基本够用
阶段题数目标🔴完成率
刷完阶段二之后,每天保持 1-2 题维持手感即可,把时间还给项目准备和投递。