重磅干货,第一时间送达题目链表中倒数第k个节点题目要求输入一个链表的头结点,从尾到头反过来打印出每个结点的值解题思路为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。当时,从链表结点的定义可以看出本题中的链表是单向链表,单向链表的结点只有从前往后的指针而没有从后往前的指针,因此这种思路行不通,它只适用于双向链表。思路:看到本题我们很自然的一个想法是从尾结点往前倒退k步,但是
分类:
编程语言 时间:
2020-12-21 10:57:50
阅读次数:
0
双链表一个节点里面有两个指针,一个指向左边,一个指向右边 不定义头结点和尾结点了 令下标是0的点表示head 令下标是1的点表示tail 邻接表的知识:把每个点的所有邻边全部存下来 邻接表就是n个单链表 head[i]存储第i个点的邻边 1 #include <bits/stdc++.h> 2 us ...
分类:
其他好文 时间:
2020-07-11 19:14:03
阅读次数:
46
解法 思路: 大致过程可以分解为 1、找到待翻转的k个节点(注意:若剩余数量小于 k 的话,则不需要反转,因此直接返回待翻转部分的头结点即可)。 2、对其进行翻转。并返回翻转后的头结点(注意:翻转为左闭又开区间,所以本轮操作的尾结点其实就是下一轮操作的头结点)。 3、对下一轮 k 个节点也进行翻转操 ...
分类:
其他好文 时间:
2020-06-23 22:59:04
阅读次数:
103
单循环链表与单链表的不同是,单循环链表尾结点的next指向第一个结点(或头结点) 代码: 无头结点: public class SingleCircleLinkedList<E> extends AbstractList<E> { private Node<E> first; private sta ...
分类:
编程语言 时间:
2020-05-24 23:46:44
阅读次数:
71
冒泡排序(bubbleSort) 像气泡一样,将数组下标从下到上递增,放着,等待操作 (可以想象成指针操作) 1.指针指向最小下标元素 2.获取比他下标大一的元素的值 3.比较相邻元素大小,若当前指针所指元素比下一个元素大,交换数据 4.指针向前移一位。跳到2步骤 5.当指针所指尾结点与尾结点,比较 ...
分类:
编程语言 时间:
2020-04-21 18:17:32
阅读次数:
57
DFS的复杂度分析: 对于邻接表的存储方式:因为邻接表中每条链表上的从第2个结点到表尾结点一定是表头结点的邻接点,所以遍历表头结点的邻接的过程中只需要遍历这些顶点即可,无需遍历其他的顶点,所以遍历某个顶点的所有邻接点的复杂度为O(ei), ei为每个顶点的邻接点个数,也就是每条链表的边数。所以邻接表 ...
分类:
其他好文 时间:
2020-04-03 18:31:53
阅读次数:
179
// 面试题22:链表中倒数第k个结点 // 题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯, // 本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点, // 从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是 // 值为4的 ...
分类:
其他好文 时间:
2020-03-26 01:11:30
阅读次数:
57
AC 自动机 1. Dominating Patterns "UVA 1449" 给N个串,然后再给一个串s,求N个串总共在S中出现了多少次 将N个串插入到AC自动机当中,如果某个结点为模式串末尾结点,则在fail树中,以该节点为祖先的所有结点,贡献都+1 然后直接暴力匹配即可,最后倒着去算一遍贡献 ...
分类:
其他好文 时间:
2020-03-20 17:07:34
阅读次数:
84
/* 输入一个链表,输出该链表中倒数第k个结点。 为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。 例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。 这个链表的倒数第3个结点是值为4的结点。 */public class Class18 { //利 ...
分类:
编程语言 时间:
2020-03-09 22:30:43
阅读次数:
69
题目链接:反转链表 题意: 输入一个链表,反转链表后,输出新链表的表头。 题解:用三个指针,分别指向当前结点,它的前一个结点和后一个结点。 在遍历过程中,将当前结点的尾结点和前一个结点替换。 代码: 1 /* 2 struct ListNode { 3 int val; 4 struct ListN ...
分类:
其他好文 时间:
2020-03-03 00:46:50
阅读次数:
65