LeetCode试题分类

与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相关的题目:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值