最近完成了www.leetcode.com的online judge中151道​​算法​​题目。除各个题目有特殊巧妙的解法以外,大部分题目都是经典的算法或者​​数据结构​​,因此做了如下小结,具体的解题思路可以搜索我的博客:​​LeetCode题解​

题目

算法

数据结构

注意事项

Clone Graph

BFS

哈希表


Word Ladder II

BFS

哈希表


Surrounded Regions

BFS

矩阵


Word Ladder

BFS

N/A


Binary Tree Level Order Traversal

BFS|前序遍历

队列


Binary Tree Level Order Traversal II

BFS|前序遍历

队列


Binary Tree Zigzag Level Order Traversal 

BFS|前序遍历

队列

每一层顺序分别对待

Implement strStr()

KMP算法

N/A


Copy List with Random Pointer

N/A

哈希表


Remove Duplicates from Sorted Array

N/A

哈希表


Remove Duplicates from Sorted Array II

N/A

哈希表


Set Matrix Zeroes

N/A

哈希表


Anagrams

N/A

哈希表


First Missing Positive

N/A

哈希表


Two Sum

N/A

哈希表


Evaluate Reverse Polish Notation

N/A

堆栈


Largest Rectangle in Histogram

N/A

堆栈

记录重要位置

Minimum Window Substring

N/A

堆栈


Simplify Path

N/A

堆栈


Longest Valid Parentheses

N/A

堆栈


Valid Parentheses

N/A

堆栈

词法分析

Container With Most Water

N/A

堆栈

记录重要位置

Reverse Words in a String

N/A

堆栈

翻转字符串

Best Time to Buy and Sell Stock

N/A

数组


Best Time to Buy and Sell Stock II

N/A

数组


Best Time to Buy and Sell Stock III

N/A

数组


Length of Last Word

N/A

数组


Search Insert Position

N/A

数组


Search for a Range

N/A

数组


Spiral Matrix

N/A

矩阵

简化为子问题

Spiral Matrix II

N/A

矩阵

简化为子问题

LRU Cache

N/A

链表


Reorder List

N/A

链表

快慢指针&链表倒序

Linked List Cycle

N/A

链表

快慢指针

Linked List Cycle II

N/A

链表

快慢指针

Reverse Linked List II

N/A

链表


Partition List

N/A

链表


Remove Duplicates from Sorted List

N/A

链表


Remove Duplicates from Sorted List II

N/A

链表


Merge Two Sorted Lists

N/A

链表


Rotate List

N/A

链表

快慢指针

Reverse Nodes in k-Group

N/A

链表


Swap Nodes in Pairs

N/A

链表


Remove Nth Node From End of List

N/A

链表

快慢指针

Text Justification

N/A

队列


Candy

N/A

N/A

简化为子问题

Valid Palindrome

N/A

N/A

首尾指针

Plus One

N/A

N/A

模拟加法运算

Valid Number

N/A

N/A

词法分析

Add Binary

N/A

N/A

模拟加法运算

Insert Interval

N/A

N/A


Merge Intervals

N/A

N/A


Multiply Strings

N/A

N/A

模拟乘法运算

Trapping Rain Water

N/A

N/A


Valid Sudoku

N/A

N/A


Roman to Integer

N/A

N/A


Integer to Roman

N/A

N/A


Palindrome Number

N/A

N/A


Reverse Integer

N/A

N/A


ZigZag Conversion

N/A

N/A


Add Two Numbers

N/A

N/A

模拟加法运算

Median of Two Sorted Arrays

N/A

N/A


String to Integer (atoi)

STL函数

N/A


Next Permutation

STL经典算法

N/A


Recover Binary Search Tree

中序遍历

二叉树


3Sum

二分查找

N/A


3Sum Closest

二分查找

N/A


4Sum

二分查找

N/A


Single Number

位运算

N/A


Single Number II

位运算

N/A


Construct Binary Tree from Preorder and Inorder Traversal

前序中序遍历

N/A


Binary Tree Preorder Traversal

前序遍历

二叉树


Flatten Binary Tree to Linked List

前序遍历

二叉树


Interleaving String

动态规划

二叉树


Unique Binary Search Trees

动态规划

二叉树


Word Break

动态规划

N/A


Word Break II

动态规划

N/A


Palindrome Partitioning

动态规划

N/A


Palindrome Partitioning II

动态规划

N/A


Triangle

动态规划

N/A


Distinct Subsequences

动态规划

N/A


Decode Ways

动态规划

N/A


Scramble String

动态规划

N/A


Maximal Rectangle

动态规划

N/A


Edit Distance

动态规划

N/A


Climbing Stairs

动态规划

N/A


Minimum Path Sum

动态规划

N/A


Unique Paths

动态规划

N/A


Unique Paths II

动态规划

N/A


Jump Game

动态规划

N/A


Jump Game II

动态规划

N/A


Maximum Subarray

动态规划

N/A


Wildcard Matching

动态规划

N/A


Substring with Concatenation of All Words

动态规划

N/A


Sort List

合并排序

链表

快慢指针

Merge Sorted Array

合并排序

N/A


Construct Binary Tree from Inorder and Postorder Traversal

后序中序遍历

N/A


Binary Tree Postorder Traversal

后续遍历

二叉树


Combinations

回溯

N/A


Permutation Sequence

回溯

N/A


N-Queens

回溯

N/A


N-Queens II

回溯

N/A


Permutations

回溯

N/A


Permutations II

回溯

N/A


Combination Sum

回溯

N/A


Combination Sum II

回溯

N/A


Sudoku Solver

回溯

N/A


Longest Substring Without Repeating Characters

回溯

N/A


Max Points on a Line

循环遍历

N/A

排除相同的点

Longest Common Prefix

循环遍历

N/A


Longest Palindromic Substring

循环遍历

N/A


Insertion Sort List

插入排序

链表


Rotate Image

矢量旋转与平移

N/A


Longest Consecutive Sequence

类BFS

哈希表


Search in Rotated Sorted Array

类二分查找

N/A


Search in Rotated Sorted Array II

类二分查找

N/A

特殊考虑相等数据

Sqrt(x)

类二分查找

N/A


Pow(x, n)

类二进制

N/A


Divide Two Integers

类二进制

N/A


Gas Station

类合并排序

N/A


Merge k Sorted Lists

类外排序

N/A


Sort Colors

类快速排序

N/A


Remove Element

类快速排序

N/A


Search a 2D Matrix

类杨氏矩阵

N/A


Restore IP Addresses

背包问题

N/A


Sum Root to Leaf Numbers

递归

二叉树


Binary Tree Maximum Path Sum

递归

二叉树


opulating Next Right Pointers in Each Node

递归

二叉树


Populating Next Right Pointers in Each Node II

递归

二叉树


Path Sum

递归

二叉树


Path Sum II

递归

二叉树


Maximum Depth of Binary Tree 

递归

二叉树


Minimum Depth of Binary Tree

递归

二叉树


Balanced Binary Tree

递归

二叉树


Symmetric Tree

递归

二叉树


Same Tree 

递归

二叉树


Validate Binary Search Tree

递归

二叉树


Unique Binary Search Trees II

递归

二叉树


Binary Tree Inorder Traversal

递归

二叉树


Pascal's Triangle

递归

N/A


Pascal's Triangle II

递归

N/A


Convert Sorted List to Binary Search Tree

递归

N/A

快慢指针&反中序遍历

Convert Sorted Array to Binary Search Tree

递归

N/A

反中序遍历

Subsets

递归

N/A


Subsets II

递归

N/A


Gray Code

递归

N/A


Word Search

递归

N/A


Count and Say

递归

N/A


Generate Parentheses

递归

N/A


Letter Combinations of a Phone Number

递归

N/A


Regular Expression Matching

递归

N/A



【作者】​​张昺华​