剑指offer原文:
- 鲁棒是英文Robust的音译,有时也翻译成健壮性。所谓的鲁棒性是指程序能够判断输入是否合乎规范要求,并对不合要求的输入予以合理的处理。
- 容错性是鲁棒性的一个重要体现。
链表中倒数第k个节点
题目描述
输入一个链表,输出该链表中倒数第k个结点。
1 | /*function ListNode(x){ |
总结:
把这个链表放到一数组里,再寻找。
方法二 双指针
1 | /*function ListNode(x){ |
总结:
设置两个指针,一快一慢,两指针保持k-1的距离差,当快指针到达链表最后一结点时,慢结点刚好到达倒数第k的位置
反转链表
题目描述
输入一个链表,反转链表后,输出新链表的表头。
1 | /*function ListNode(x){ |
合并两个排序的链表
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
1 | /*function ListNode(x){ |
树的子结构
题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
1 | /* function TreeNode(x) { |
总结:
如果A有一部分子树的结构和B是一样的,则称B是A的子结构。
当根节点相同时递归调用isSubtree()函数,继续判断左子树或右子树是否相同
若root1子树存在,而root2子树不存在时,判断为true(这是特殊情况)
除此之外,若root2子树存在,root1不存在 或者 两个树的根节点存在但不相同时,均返回false