摘要:
题目 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 说明 : 如果你可以运用递归和迭代两种方法解决这个问题,会很加分。 本题同 "【剑指Offer】面试题28. 对称的 阅读全文
摘要:
题目 翻转一棵二叉树。 示例: 输入: 输出: 本题同 "【剑指Offer】面试题27. 二叉树的镜像" 思路一:递归 代码 时间复杂度:O(n) 空间复杂度:O(n) 思路二:迭代 类似深度优先。 代码 时间复杂度:O(n) 空间复杂度:O(n) 阅读全文
摘要:
题目 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 镜像输出: 示例 1: 限制: `0 left && !root right)) return root; root left = mirrorTree(root left); root right = mirrorTree(r 阅读全文
摘要:
题目 输入两个链表,找出它们的第一个公共节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 示例 2: 示例 3: 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O 阅读全文
摘要:
题目 输入两个链表,找出它们的第一个公共节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 示例 2: 示例 3: 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O 阅读全文
摘要:
题目 反转一个单链表。 示例: 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 注意 :本题同 "【剑指Offer】面试题24. 反转链表" 思路一:反转链表元素 取出链表中元素放入vector中,然后将vector中元素逆向存入链表中。 1. 遍历链表,用vector存放数组元素 阅读全文
摘要:
题目 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 限制: `0 res; ListNode pNode = head; while (pNode != nullptr) { res.push_back(pNode val); pNode = pNode next 阅读全文
摘要:
LeetCode题解汇总(包括剑指Offer和程序员面试金典,持续更新)) 剑指Offer 数据结构 链表 序号 题目 难度 06 从尾到头打印链表 简单 18 删除链表的节点 简单 22 链表中倒数第k个节点 简单 24 反转链表 简单 25 合并两个排序的链表 简单 35 复杂链表的复制 中等 阅读全文
摘要:
题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 思路 1. 先统计链表节点个数 2. 计算从前向后 阅读全文
摘要:
题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意 :此题对比原题有改动 示例 1: 示例 2: 说明: 题目保证链表中节点的值互不相同 若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点 思路 为了简化删除头节 阅读全文