Depth First Search

题目

  • Leetcode 351. Android Unlock Patterns
  • Leetcode 17. Letter Combinations of a Phone Number
  • Leetcode 51. N-Queens (这道题和letter combination非常像,我们每一row都要选,但有不同选择,所以我们顺序遍历row,只对col进行搜索)
  • Leetcode 52. N-Queens II
  • Leetcode 37. Sudoku Solver
  • Leetcode 339. Nested List Weight Sum
  • Leetcode 364. Nested List Weight Sum II (第二问的区别在于depth是从下往上算的,我们可以做的是先DFS算出它的maxDepth,然后依然top-down来做,通过maxDepth - curDepth来反算depth)
  • Leetcode 386. Lexicographical Numbers
  • Leetcode 79. Word Search
  • Leetcode 254. Factor Combinations

Permutation问题

  • Leetcode Leetcode 267. Palindrome Permutation II
  • Leetcode 247. Strobogrammatic Number II
  • Leetcode 248. Strobogrammatic Number III
  • Leetcode 22. Generate Parentheses
  • Leetcode 46. Permutations
  • Leetcode 47. Permutations II

Subset问题,本质上是01取或者不取

  • Leetcode 320. Generalized Abbreviation
  • Leetcode 411. Minimum Unique Word Abbreviation
  • Leetcode 408. Valid Word Abbreviation (这道题并不是subset问题,只是411的一部分)
  • Leetcode 401. Binary Watch
  • Leetcode 131. Palindrome Partitioning
  • Leetcode 77. Combinations (subset without duplicate)
  • Leetcode 39. Combination Sum (subset without duplicate)
  • Leetcode 40. Combination Sum II (subset with duplicate,特别注意要使用visited array)
  • Leetcode 216. Combination Sum III (subset without duplicate)

Surrounded Regions类型搜索问题(这种类型的问题需要换个思路思考搜索的起点,通常可以降低时间复杂度)

  • Leetcode 417. Pacific Atlantic Water Flow (比如这道题,我们搜索的起点可以是每座山,也可以是每片海,而妙就妙在,如果以每座山作为起点,那么我们需要搜索O(mn)次,而以每片海作为搜索起点,那么我们只需要搜索O(m + n)次)
  • Leetcode 130. Surrounded Regions (比如这道题,我们搜索的起点可以是中间的O,也可以是四边的O,如果以中间的O作为搜索的起点,那么需要搜索O(mn)次,如果以边上的O作为起点,那么只需要搜索O(m + n)次)
  • Leetcode 286. Walls and Gates

results matching ""

    No results matching ""