玩转算法面试LeetCode题目目录

文章目录

    • 一、数组中的问题其实最常见
      • 1. 如何写出正确的程序
      • 2. 基础算法思路的应用
      • 3. 对撞指针
      • 4. 滑动窗口
    • 二、查找表相关问题
    • 三、在链表中穿针引线
    • 四、栈、队列、优先队列
      • 1. 栈的基础使用
      • 2. 栈和递归的紧密关系
      • 3. 队列的基本应用-广度优先遍历
      • 4. BFS和图的最短路径
      • 5. 优先队列
    • 五、二叉树和递归
    • 六、递归和回溯
    • 七、动态规划基础
    • 八、贪心算法

一、数组中的问题其实最常见

1. 如何写出正确的程序

  • 283. Move Zeroes
  • 027. Remove Element
  • 026. Remove Duplicates from Sorted Array
  • 080. Remove Duplicates from Sorted Array II

2. 基础算法思路的应用

  • 075. Sort Colors
  • 088. Merge Sorted Array
  • 215. Kth Largest Element in an Array

3. 对撞指针

  • 167. Two Sum II - Input array is sorted
  • 125. Valid Palindrome
  • 344. Reverse String
  • 345. Reverse Vowels of a String
  • 011. Container With Most Water

4. 滑动窗口

  • 209. Minimum Size Subarray Sum
  • 003. Longest Substring Without Repeating Characters
  • 438. Find All Anagrams in a String
  • 076. Minimum Window Substring

二、查找表相关问题

  • 349. Intersection of Two Arrays
  • 350. Intersection of Two Arrays II
  • 242. Valid Anagram
  • 202. Happy Number
  • 290. Word Pattern
  • 205. Isomorphic Strings
  • 451. Sort Characters By Frequency
  • 015. 3Sum
  • 018. 4Sum
  • 016. 3Sum Closest
  • 454. 4Sum II
  • 049. Group Anagrams
  • 447. Number of Boomerangs
  • 149. Max Points on a Line
  • 219. Contains Duplicate II
  • 217. Contains Duplicate
  • 220. Contains Duplicate III

三、在链表中穿针引线

  • 206. Reverse Linked List
  • 092. Reverse Linked List II
  • 083. Remove Duplicates from Sorted List
  • 086. Partition List
  • 328. Odd Even Linked List
  • 002. Add Two Numbers
  • 445. Add Two Numbers II
  • 203. Remove Linked List Elements
  • 082. Remove Duplicates from Sorted List II
  • 021. Merge Two Sorted Lists
  • 024. Swap Nodes in Pairs
  • 025. Reverse Nodes in k-Group
  • 147. Insertion Sort List
  • 148. Sort List
  • 237. Delete Node in a Linked List
  • 019. Remove Nth Node From End of List
  • 061. Rotate List
  • 143. Reorder List
  • 234. Palindrome Linked List

四、栈、队列、优先队列

1. 栈的基础使用

  • 020. Valid Parentheses
  • 150. Evaluate Reverse Polish Notation
  • 071. Simplify Path

2. 栈和递归的紧密关系

  • 144. Binary Tree Preorder Traversal
  • 094. Binary Tree Inorder Traversal
  • 145. Binary Tree Postorder Traversal
  • 341. Flatten Nested List Iterator

3. 队列的基本应用-广度优先遍历

  • 102. Binary Tree Level Order Traversal
  • 107. Binary Tree Level Order Traversal II
  • 103. Binary Tree Zigzag Level Order Traversal
  • 199. Binary Tree Right Side View

4. BFS和图的最短路径

  • 279. Perfect Squares
  • 127. Word Ladder
  • 126. Word Ladder II

5. 优先队列

  • 347. Top K Frequent Elements
  • 23. Merge k Sorted Lists

五、二叉树和递归

  • 104. Maximum Depth of Binary Tree
  • 111. Minimum Depth of Binary Tree
  • 226. Invert Binary Tree
  • 100. Same Tree
  • 101. Symmetric Tree
  • 222. Count Complete Tree Nodes
  • 110. Balanced Binary Tree
  • 112. Path Sum
  • 404. Sum of Left Leaves
  • 257. Binary Tree Paths
  • 113. Path Sum II
  • 129. Sum Root to Leaf Numbers
  • 437. Path Sum III
  • 235. Lowest Common Ancestor of a Binary Search Tree
  • 098. Validate Binary Search Tree
  • 450. Delete Node in a BST
  • 108. Convert Sorted Array to Binary Search Tree
  • 230. Kth Smallest Element in a BST
  • 236. Lowest Common Ancestor of a Binary Tree

六、递归和回溯

  • 017. Letter Combinations of a Phone Number
  • 093. Restore IP Addresses
  • 131. Palindrome Partitioning
  • 046. Permutations
  • 047. Permutations II

七、动态规划基础

动态规划: 将原问题拆解成若干的子问题,同时保存子问题的答案使得每个子问题只求解一次,最终获得原问题的答案。

最优子结构: 通过求子问题的最优解,可以获得原问题的最优解。
玩转算法面试LeetCode题目目录_第1张图片

  • 070. Climbing Stairs
  • 120. Triangle
  • 064. Minimum Path Sum
  • 343. Integer Break
  • 279. Perfect Squares
  • 091. Decode Ways
  • 062. Unique Paths
  • 063.Unique Paths II

八、贪心算法

  • 455. 分发饼干
  • 392. 判断子序列
  • 435. 无重叠区间

你可能感兴趣的:(算法与数据结构)