第一步:检测链表是否有环。 方法还是比较多的,这里先讲一个:快慢指针。 快慢指针的方法,就是让两个指针同时指向链表。在向后遍历的时候,一个指针每次走两步,称为快指针;一个指针每次走一步,称为慢指针。如果快慢指针相遇,则说明链表有环,否则无环。(后面证明。) 代码实现如下 第二步:找到环的入口。 先画 ...
分类:
其他好文 时间:
2019-04-19 18:03:47
阅读次数:
164
问题来源:选自leetcode 21:合并两个有序链表 问题描述: 题目给定信息: 给定两个有序链表,把两个链表合并成一个链表,并且合并后的链表依然是有序的。这两个链表中允许有重复元素 问题分析: 设置一个临时头节点,同时遍历两个原链表,遍历循环的条件是两个链表都不为空的情况下循环才能继续执行。每次 ...
分类:
编程语言 时间:
2019-04-10 23:47:42
阅读次数:
261
1.链表节点:typedef struct listNode{ //前置节点 struct listNode prev; //后置节点 struct listNode next; //节点值 int value;}2.链表:typedef struct list{ //表头节点 listNode h ...
分类:
其他好文 时间:
2019-04-05 12:08:35
阅读次数:
154
从图中看出的最重要的一点是前序序列怎末划分成两部分。其实可以先在中序中找出左边有n个元素,然后前序除了第一个头节点之后的n个元素就是左子树上的前序序列。另外的就是右子树的前序序列。注意上图中前序中序分块的颜色匹配。
分类:
其他好文 时间:
2019-04-03 16:39:18
阅读次数:
128
1.从顺序表中删除重复的元素,并使剩余元素间的相对次序保存不变。 1.1 代码1 1.2 不懂得地方 53行到64行 算法思路有点混乱,思路不是特别清晰 分析:第i个i元素与前面j已确定无重复得j个元素进行比较,相同则不是算入无重复序列 2.一个带有表头节点的单链表,查找链表中倒数第m个位置上的节点 ...
分类:
其他好文 时间:
2019-03-25 23:11:22
阅读次数:
222
基本思路 1. 定义两个指示指针a b 2. 让a先行移动n+1个位置 3. 若a指向了NULL的位置,则删除的是头节点(由于走过了n+1个节点刚好指在尾部的NULL上) 4. 否则让b与a一起移动直至a next,即a的下一个节点为NULL,则此时b的下一个节点为要删除的节点 5. 删除下一个节点 ...
分类:
其他好文 时间:
2019-03-22 11:55:04
阅读次数:
147
接着第四课的内容,加入部分第五课的内容,主要介绍树形dp和LRU 第一题: 给定一棵二叉树的头节点head,请返回最大搜索二叉子树的大小 二叉树的套路 统一处理逻辑:假设以每个节点为头的这棵树,他的最大搜索二叉子树是什么。答案一定在其中 第一步,列出可能性(最难部分) 1、可能来自左子树上的某课子树 ...
分类:
编程语言 时间:
2019-03-05 18:42:56
阅读次数:
143
题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 测试用例: 1)功能测试(输入的两个链表有多个节点;节点的值互不相同或者存在值相等的多个节点) 2)特殊输入测试(连个链表的一个或者两个头节点为nullptr指针;两个链表中只有一个节点)为什么 ...
分类:
编程语言 时间:
2019-03-02 17:19:24
阅读次数:
216
题目描述: 输入一个链表,输出该链表中倒数第k个结点。 尾节点是倒数第一个节点 测试用例: 功能测试(第k个节点在中间、是头节点、是尾节点) 特殊输入测试(链表头节点是nullptr指针、链表的头节点个数小于k、k=0) 解题思路: 1)使用两个指针,一个指针先移动k步,如果链表小于k,终止返回nu ...
分类:
其他好文 时间:
2019-02-28 11:51:04
阅读次数:
141
一、手柄在世界坐标系中有一个绝对朝向,我们可以知道箭头相对于手柄的朝向,相对于手柄的旋转角度。 可以通过手柄绝对朝向、箭头的相对于手柄的朝向计算得到箭头的绝对朝向。 在得到箭头的相对于手柄的角度,在这个角度的基础上,再旋转一个手柄在世界坐标系中的绝对角度,就可以得到箭头在世界坐标系中的绝对角度。 两 ...
分类:
其他好文 时间:
2019-02-24 23:14:12
阅读次数:
894