与Binary Tree相关的题目:
Balanced Binary Tree
Binary Tree Inorder Traversal
Binary Tree Level Order Traversal
Binary Tree Level Order Traversal II
Binary Tree Maximum Path Sum
Binary Tree Postorder Traversal
Binary Tree Preorder Traversal
Binary Tree Zigzag Level Order Traversal
Construct Binary Tree from Inorder and Postorder Traversal
Construct Binary Tree from Preorder and Inorder Traversal
Convert Sorted Array to Binary Search Tree
Convert Sorted List to Binary Search Tree
Maximum Depth of Binary Tree
Minimum Depth of Binary Tree
Populating Next Right Pointers in Each Node
将每一行看成一个链表,链表的头就是最左边的节点。循环便利整个链表。
对于每个节点:
1. 将左右子节点链接起来
2. 将右边的子节点存到一个变量当中。
3. 如果临时变量不为空,则将临时变量的next指针指向当前节点的左子节点
Populating Next Right Pointers in Each Node II
相比于完全二叉树的情况,对于普通二叉树要做如下修改:
1. 关于每行的头节点:
遍历当前行,知道找到第一个非空的子节点。如果没有,说明是最后一行,那么就退出
2. 临时变量存储的不是左子节点,就是右子节点。
3. 如果左子节点为空,则临时变量链接当前节点的右子节点。
如果左子节点不为空,则链接当前节点的左子节点
如果子节点都为空,则直接链接空。
Same Tree
Symmetric Tree
Unique Binary Search Tree
Unique Binary Search Tree II
Flatten Binary Tree to Linked List
Recover Binary Search Tree
Sum Root to Leaf Numbers
递归遍历 + Stack存储每个叶子节点组成的数字
Path Sum
Path Sum II
与链表,数组,集合相关的题目:
Best Time to Buy and Sell Stock I
Best Time to Buy and Sell Stock II
Best Time to Buy and Sell Stock III
Linked List Cycle
1. Slow和Fast都从Head开始搜索,这样最后得到的Slow和Fast相交的节点可以方便的计算环的入口
2. While的判断条件是Fast != null && Fast.next != null
3. 一定要在While循环的最后判断Fast和Slow是否相等,如果相等,则break;
Linked List Cycle II
1. 设置一个指针指向Head,另一个指针指向汇合点。 然后每次移动两个指针一步,直到两个指针相交,正好是环的入口
从Head到环的入口的距离: a
从环的入口到汇合点的距离 : b
整个环的长度是: r
2(a + b) = b + nr + a
a + b = nr
a + b = (n - 1)r + r
a + b = (n - 1)r + L - a
a = (n - 1)r + L - a - b
L - a - b 恰恰是从汇合点到入口的距离
a 是从head到达入口点的距离
Remove Duplicates from Sorted List
Remove Duplicates from Sorted List II
Search Insert Position
Maximum Subarray
Remove Element
Swap Nodes in Pairs
Merge Sorted Array
Sort List
Reorder List
在有大数据的时候,效率不够好。 Time Limited Exceeded.
Copy List with Random Pointer
因为是要求深拷贝,所以要将每个新的node的RandomListNode指向相应新的Node
整个算法分为三步:
1. 复制旧的node,每一个新的node作为旧的node的next node
2. 依次拷贝每个旧的节点的RandomListNode
3. 将旧的node和新的node分成两个独立的List
Longest Consecutive Sequence
Reverse Linked List II
Subsets
Subsets II
Partition List
Search In Rotated Sorted Array II
Rotate List
先扫面一遍Linked List获得大小
用mod运算计算出往右移动的真实距离
Merge Sorted Array
Merge K Sorted Lists
Remove Nth node From End of List
Median of Two Sorted Arrays
与字符串相关的题目:
Distinct Subsequence
Implement strStr()
Interleaving String
Longest Palindromic Substring
Longest Substring without Repeating Characters
Multiply String
Minimum Substring Window
Palindrome Number
Palindrome Partitioning
Palindrome Partitioning II
Valid Palindrome
Regular Expression Matching
Scramble String
String to Integer(atoi)
Substring with Concatenation of All Words
Word Break
Work Break II
Word Ladder
Word Ladder II
Word Search
与数学相关的题目:
与图和Matrix相关的题目: