摘要: 题目 给定两个单链表,查找这两个单链表的第一个交叉节点。 例如:链表list_a为:a1→a2→c1→c2→c3,链表list_b为:b1→b2→b3→c1→c2→c3。那么它们第一个交叉结点为c1。 解析 如果两个链表有交叉结点的话,那么交叉节点之后的其他节点都是相同的,即两个链表的结构是Y字型。 阅读全文
posted @ 2018-10-29 16:34 Terry_Chen 阅读(1239) 评论(0) 推荐(0) 编辑
摘要: 题目 给定一棵二叉树,要求输出其左右翻转后二叉树的中序遍历。 解析 两个步骤: 1. 镜像翻转:只需要遍历二叉树,每次访问一个结点时,交换其左右孩子。 2. 中序遍历。 Python实现 阅读全文
posted @ 2018-10-29 01:21 Terry_Chen 阅读(2927) 评论(0) 推荐(0) 编辑
摘要: 题目 求数组中两两相加等于20的组合。 例:给定一个数组[1, 7, 17, 2, 6, 3, 14],这个数组中满足条件的有两对:17+3=20, 6+14=20。 解析 分为两个步骤: 1. 先采用堆排序或快速排序对数组进行排序,时间复杂度为O(nlogn)。 2. 然后对排序的数组分别从前到后 阅读全文
posted @ 2018-10-28 22:17 Terry_Chen 阅读(1985) 评论(0) 推荐(0) 编辑
摘要: 题目 一个链表,奇数结点升序,偶数结点降序,要求变成一个全升序的链表。 例如:1 8 2 7 3 6 4 5,变为1 2 3 4 5 6 7 8 解析 按照以下步骤处理: 1. 按照奇偶位拆分为两个链表 2. 反转偶数结点构成的链表 3. 合并两个递增链表 Python实现 阅读全文
posted @ 2018-10-28 16:45 Terry_Chen 阅读(1689) 评论(0) 推荐(0) 编辑
摘要: 堆排序(Heap Sort) 是一棵具有以下性质的 : 大顶堆:每个结点的值都大于或等于其左右孩子结点的值 小顶堆:每个结点的值都小于或等于其左右孩子结点的值 的主要思想: 将待排序列构造成一个大顶堆,此时堆顶元素就是整个序列的最大值,将堆顶元素与堆数组的末尾元素进行交换。然后将剩余的n 1个元素重 阅读全文
posted @ 2018-10-28 12:01 Terry_Chen 阅读(1596) 评论(0) 推荐(0) 编辑