单向链表创建 链表是动态分配存储空间的链式存储结构。 其包括一个“头指针”变量,其中第0个结点称为整个链表的头结点,头结点中存放一个地址,该地址指向一个元素,头结点一般不存放具体数据,只是存放第一个结点的地址。 链表中每一个元素称为“结点”,每个结点都由两部分组成:存放数据元素的数据域和存储直接后继 ...
分类:
其他好文 时间:
2017-04-16 13:57:54
阅读次数:
266
题目描述对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:true 解答: 用栈即可,就是初次答链表,试一下 ...
分类:
其他好文 时间:
2017-04-12 19:23:12
阅读次数:
96
思路一: 1、先求出两个链表ListA,ListB的长度LengthA,LengthB。 2、然后先把长的链表头指针先往前走|LengthA - LengthB|步。 3、最后两个链表头指针同步往前走一步,直到指向的对象相同。 代码实现及测试用例: 思路2: 不用求出链表长度的值,但其实算法复杂度是 ...
分类:
其他好文 时间:
2017-04-11 11:32:39
阅读次数:
214
题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路:难点在于指针的控制。。。。 ...
分类:
其他好文 时间:
2017-04-11 09:53:37
阅读次数:
178
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 /* struct ListNode { int val; struct ListNode *next; ListN ...
分类:
其他好文 时间:
2017-04-09 09:56:26
阅读次数:
133
题目描述 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。 /* struct ListNode { int val; struct ...
分类:
其他好文 时间:
2017-04-02 00:07:20
阅读次数:
171
原理:队列的头指针执行头节点,尾指针执行最后一个节点。队列 + 有头链表。先进先出FIFO。 ...
分类:
其他好文 时间:
2017-03-19 22:10:52
阅读次数:
234
方法:用数组 + 头指针 + 尾指针 实现的,从尾部插入,从头部删除,先进先出的,FIFO。 循环队列中数据,比数组少1。 ...
分类:
其他好文 时间:
2017-03-19 13:05:56
阅读次数:
143
思路:先对List进行一次遍历,得到长度,第二次遍历时从(length-k%length)处切开即可,这里需要注意第一次遍历结束后指针停留在最后一个元素处,第二次遍历时这个指针便相当于头指针,方便~ ...
分类:
其他好文 时间:
2017-03-18 22:34:47
阅读次数:
132
题目链接:http://poj.org/problem?id=2823 用RMQ超时了,我想应该是不会的,看discuss说,之前RMQ过了。 维护两个单调队列。 单调递减的队列,每插入一个时: 超过单调队列长度,左移头指针。 第一个或者符合条件,直接加到后面。 否则,一直退; 题目链接:http: ...
分类:
其他好文 时间:
2017-02-16 01:39:56
阅读次数:
231