摘要:
如果一个节点有右子树,那么它的下一个节点就是它的右子树中的最左子节点。 接着我们分析一个节点没有右子树的情形: 如果结点是它父节点的左子节点,那么它的下一个节点就是它的父节点。 如果一个节点没有右子树,并且它还是它父节点的右子节点。我们可以沿着指向父节点的指针一直向上遍历,直到找到一个是它父节点的左 阅读全文
摘要:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), r 阅读全文
摘要:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solu 阅读全文
摘要:
在部分编程语言中,我们可以动态地将原数组长度扩大,此时我们就可以使用双指针算法,来降低空间的使用: 首先遍历一遍原数组,求出最终答案的长度length; 将原数组resize成length大小; 使用两个指针,指针i指向原字符串的末尾,指针j指向length的位置; 两个指针分别从后往前遍历,如果s 阅读全文
摘要:
由于给定的二维数组具备每行从左到右递增以及每列从上到下递增的特点,当访问到一个元素时,可以排除数组中的部分元素。 从二维数组的右上角开始查找。如果当前元素等于目标值,则返回 true。如果当前元素大于目标值,则移到左边一列。如果当前元素小于目标值,则移到下边一行。 可以证明这种方法不会错过目标值。如 阅读全文