React Router

LeetCode 算法题解

LeetCode 算法题的 JavaScript 解决方案集合

📋 LeetCode 热门前 100 题完整列表

🔢 数组与字符串 (Array & String)

基础操作

  1. 两数之和 (Two Sum) - 简单
  2. 整数反转 (Reverse Integer) - 简单
  3. 回文数 (Palindrome Number) - 简单
  4. 罗马数字转整数 (Roman to Integer) - 简单
  5. 最长公共前缀 (Longest Common Prefix) - 简单
  6. 有效的括号 (Valid Parentheses) - 简单
  7. 合并两个有序链表 (Merge Two Sorted Lists) - 简单
  8. 删除有序数组中的重复项 (Remove Duplicates from Sorted Array) - 简单
  9. 移除元素 (Remove Element) - 简单
  10. 实现 strStr() (Implement strStr()) - 简单

双指针与滑动窗口

  1. 盛最多水的容器 (Container With Most Water) - 中等
  2. 三数之和 (3Sum) - 中等
  3. 最接近的三数之和 (3Sum Closest) - 中等
  4. 四数之和 (4Sum) - 中等
  5. 无重复字符的最长子串 (Longest Substring Without Repeating Characters) - 中等
  6. 最长回文子串 (Longest Palindromic Substring) - 中等
  7. Z 字形变换 (ZigZag Conversion) - 中等
  8. 字符串转换整数 (String to Integer) - 中等
  9. 外观数列 (Count and Say) - 简单
  10. 有效的数独 (Valid Sudoku) - 中等

数组排序与查找

  1. 寻找两个正序数组的中位数 (Median of Two Sorted Arrays) - 困难
  2. 搜索旋转排序数组 (Search in Rotated Sorted Array) - 中等
  3. 在排序数组中查找元素的第一个和最后一个位置 (Find First and Last Position of Element in Sorted Array) - 中等
  4. 搜索插入位置 (Search Insert Position) - 简单
  5. 组合总和 (Combination Sum) - 中等
  6. 组合总和 II (Combination Sum II) - 中等
  7. 第一个缺失的正数 (First Missing Positive) - 困难
  8. 接雨水 (Trapping Rain Water) - 困难
  9. 跳跃游戏 (Jump Game) - 中等
  10. 跳跃游戏 II (Jump Game II) - 中等

🔗 链表 (Linked List)

  1. 两数相加 (Add Two Numbers) - 中等
  2. 删除链表的倒数第 N 个结点 (Remove Nth Node From End of List) - 中等
  3. 合并 K 个升序链表 (Merge k Sorted Lists) - 困难
  4. 两两交换链表中的节点 (Swap Nodes in Pairs) - 中等
  5. K 个一组翻转链表 (Reverse Nodes in k-Group) - 困难
  6. 旋转链表 (Rotate List) - 中等
  7. 删除排序链表中的重复元素 (Remove Duplicates from Sorted List) - 简单
  8. 删除排序链表中的重复元素 II (Remove Duplicates from Sorted List II) - 中等
  9. 分隔链表 (Partition List) - 中等
  10. 反转链表 II (Reverse Linked List II) - 中等

🌳 树 (Tree)

  1. 二叉树的最大深度 (Maximum Depth of Binary Tree) - 简单
  2. 验证二叉搜索树 (Validate Binary Search Tree) - 中等
  3. 对称二叉树 (Symmetric Tree) - 简单
  4. 二叉树的层序遍历 (Binary Tree Level Order Traversal) - 中等
  5. 将有序数组转换为二叉搜索树 (Convert Sorted Array to Binary Search Tree) - 简单
  6. 平衡二叉树 (Balanced Binary Tree) - 简单
  7. 二叉树的最小深度 (Minimum Depth of Binary Tree) - 简单
  8. 路径总和 (Path Sum) - 简单
  9. 路径总和 II (Path Sum II) - 中等
  10. 二叉树的后序遍历 (Binary Tree Postorder Traversal) - 简单

🔍 深度优先搜索 (DFS)

  1. 电话号码的字母组合 (Letter Combinations of a Phone Number) - 中等
  2. 括号生成 (Generate Parentheses) - 中等
  3. 全排列 (Permutations) - 中等
  4. 全排列 II (Permutations II) - 中等
  5. 子集 (Subsets) - 中等
  6. 子集 II (Subsets II) - 中等
  7. 单词搜索 (Word Search) - 中等
  8. 岛屿数量 (Number of Islands) - 中等
  9. 被围绕的区域 (Surrounded Regions) - 中等
  10. 克隆图 (Clone Graph) - 中等

🔄 广度优先搜索 (BFS)

  1. 打开转盘锁 (Open the Lock) - 中等
  2. 完全平方数 (Perfect Squares) - 中等
  3. 单词接龙 (Word Ladder) - 困难
  4. 单词接龙 II (Word Ladder II) - 困难
  5. 课程表 (Course Schedule) - 中等
  6. 课程表 II (Course Schedule II) - 中等
  7. 最小高度树 (Minimum Height Trees) - 中等
  8. 重新安排行程 (Reconstruct Itinerary) - 困难
  9. 冗余连接 (Redundant Connection) - 中等
  10. 冗余连接 II (Redundant Connection II) - 困难

🎯 动态规划 (Dynamic Programming)

  1. 爬楼梯 (Climbing Stairs) - 简单
  2. 买卖股票的最佳时机 (Best Time to Buy and Sell Stock) - 简单
  3. 买卖股票的最佳时机 II (Best Time to Buy and Sell Stock II) - 中等
  4. 买卖股票的最佳时机 III (Best Time to Buy and Sell Stock III) - 困难
  5. 买卖股票的最佳时机 IV (Best Time to Buy and Sell Stock IV) - 困难
  6. 最大子序和 (Maximum Subarray) - 简单
  7. 乘积最大子数组 (Maximum Product Subarray) - 中等
  8. 打家劫舍 (House Robber) - 中等
  9. 打家劫舍 II (House Robber II) - 中等
  10. 打家劫舍 III (House Robber III) - 中等

🔢 数学 (Math)

  1. 加一 (Plus One) - 简单
  2. x 的平方根 (Sqrt(x)) - 简单
  3. Pow(x, n) (Pow(x, n)) - 中等
  4. 格雷编码 (Gray Code) - 中等
  5. 只出现一次的数字 (Single Number) - 简单
  6. 只出现一次的数字 II (Single Number II) - 中等
  7. 只出现一次的数字 III (Single Number III) - 中等
  8. 缺失数字 (Missing Number) - 简单
  9. 丑数 (Ugly Number) - 简单
  10. 丑数 II (Ugly Number II) - 中等

🎲 其他经典题目

  1. LRU 缓存 (LRU Cache) - 中等
  2. LFU 缓存 (LFU Cache) - 困难
  3. 设计循环队列 (Design Circular Queue) - 中等
  4. 设计循环双端队列 (Design Circular Deque) - 中等
  5. 设计推特 (Design Twitter) - 中等
  6. 设计哈希集合 (Design HashSet) - 简单
  7. 设计哈希映射 (Design HashMap) - 简单
  8. 设计最小栈 (Min Stack) - 简单
  9. 设计浏览器历史记录 (Design Browser History) - 中等
  10. 设计停车系统 (Design Parking System) - 简单

📖 题目分类

数组与字符串

  • 两数之和、三数之和
  • 无重复字符的最长子串
  • 最长回文子串
  • Z 字形变换
  • 盛最多水的容器

链表操作

  • 两数相加
  • 删除链表的倒数第 N 个结点
  • 合并两个有序链表
  • 合并 K 个升序链表
  • 两两交换链表中的节点
  • K 个一组翻转链表

栈与队列

  • 有效的括号
  • 最长有效括号
  • 括号生成

搜索与排序

  • 寻找两个正序数组的中位数
  • 搜索旋转排序数组
  • 在排序数组中查找元素的第一个和最后一个位置
  • 搜索插入位置

回溯算法

  • 电话号码的字母组合
  • 组合总和
  • 组合总和 II
  • 解数独

动态规划

  • 最长回文子串
  • 正则表达式匹配

数学问题

  • 整数反转
  • 字符串转换整数
  • 回文数
  • 外观数列

其他经典题目

  • 下一个排列
  • 有效的数独

🎯 学习建议

1. 按难度递进

  • 从简单题目开始,逐步挑战中等和困难题目
  • 每道题都要理解解题思路,不要只看代码

2. 掌握核心算法

  • 双指针:解决数组、字符串问题
  • 滑动窗口:处理子串、子数组问题
  • 二分查找:在有序数组中快速查找
  • 回溯算法:解决组合、排列问题
  • 动态规划:优化递归,避免重复计算
  • 栈和队列:处理括号匹配、单调栈问题

3. 代码规范

  • 使用清晰的变量命名
  • 添加必要的注释
  • 分析时间和空间复杂度
  • 考虑边界情况

4. 练习方法

  • 先独立思考,尝试解题
  • 如果卡住,查看解题思路
  • 理解后自己重新实现
  • 总结相似题目的解题模式

📊 复杂度分析

时间复杂度

  • O(1):常数时间
  • O(log n):对数时间(二分查找)
  • O(n):线性时间(遍历)
  • O(n log n):排序算法
  • O(n²):嵌套循环
  • O(2^n):指数时间(回溯)

空间复杂度

  • O(1):常数空间
  • O(n):线性空间(数组、栈)
  • O(n²):二维数组

🔗 相关资源

📝 更新日志

  • 2024年:创建 LeetCode 题解文档
  • 包含热门前一百题的 JavaScript 解决方案
  • 详细的解题思路和复杂度分析

开始你的算法学习之旅吧! 🚀

选择上面的任意一个文档开始学习,或者按照难度顺序逐步挑战。记住,算法学习是一个渐进的过程,保持耐心和持续练习是关键!