算法题解索引

一句话说明

这页不是为了堆题,而是把常见算法和对应题型绑在一起,方便按“套路”刷题。

建议的专题顺序

  1. 双指针
  2. 二分查找
  3. BFS / DFS
  4. 回溯
  5. 动态规划
  6. 贪心

常见算法与代表题型

算法代表题核心抓手
双指针两数之和 II、三数之和收缩区间
二分查找搜索插入位置、左右边界单调性
BFS岛屿、最少步数按层扩展
DFS / 回溯全排列、子集、单词搜索做选择再撤销
动态规划打家劫舍、LCS、编辑距离状态定义
贪心跳跃游戏、区间覆盖局部最优

一个代表性 Go 模板:标准二分

func binarySearch(nums []int, target int) int {
    left, right := 0, len(nums)-1
    for left <= right {
        mid := left + (right-left)/2
        if nums[mid] == target {
            return mid
        }
        if nums[mid] < target {
            left = mid + 1
        } else {
            right = mid - 1
        }
    }
    return -1
}

一个代表性 Go 模板:回溯子集

func subsets(nums []int) [][]int {
    result := [][]int{}
    path := []int{}
 
    var backtrack func(start int)
    backtrack = func(start int) {
        result = append(result, append([]int(nil), path...))
        for i := start; i < len(nums); i++ {
            path = append(path, nums[i])
            backtrack(i + 1)
            path = path[:len(path)-1]
        }
    }
 
    backtrack(0)
    return result
}

刷题原则

  • 先按算法专题刷,不要一开始就混题海
  • 每个专题至少总结一个稳定 Go 模板
  • 做题时先问“为什么是这个算法”,再问“代码怎么写”

相关页面


返回:LeetCode题解