给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 说明: 给定的 n 保证是有效的。 思路:用快慢指针 对于每一个n,用第一个指针也就是快指针先跑n-1步, 然后再让两个指针同时跑,name当快指针跑到null时,满指针就跑到了要删除的节点 然后就先交换值,再把下一个节点的 ...
分类:
其他好文 时间:
2018-11-09 20:53:01
阅读次数:
169
题目描述: 给定一个链表,删除链表的倒数第n个节点,并返回头结点 解题思路1: 获取链表的总长度 ,拿到要删除节点的前一个节点 ,删除要删除的节点,并返回头节点 参考代码: java public static ListNode solution2(ListNode head, int n) { i ...
分类:
其他好文 时间:
2018-11-09 16:21:30
阅读次数:
173
```
class Hero(object): def __init__(self, no=None, nickname=None, name=None, pNext=None): self.no = no self.nickname = nickname self.name = name self... ...
分类:
其他好文 时间:
2018-11-08 12:42:48
阅读次数:
140
最近在看redis方面的书籍,碰到了跳跃表这个数据结构。常规的单向链表在进行增删改查时,只能从头结点开始遍历,时间复杂度O(N),而跳跃表采用了二分法的思想,平均时间复杂度可以做到O(logN),最坏时间复杂度O(N)。另外,跳跃表是一种基于概率的数据结构(见下文添加元素操作)。 基本结构 下图是跳 ...
分类:
其他好文 时间:
2018-11-07 15:30:02
阅读次数:
211
假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,则可共享相同的后缀空间。 ...
分类:
其他好文 时间:
2018-11-06 00:55:22
阅读次数:
436
public void nizhi()//链表的逆置 { Node T1,T2=head;//head是定义的头结点. T2=head.Next; head.Next=null; while(T2!=null) { T1=T2.Next; T2.Next=head.Next; head.Next=T ...
js实现栈或者队列有两种方式: 1.数组:数组本身提供栈方法(push,pop),队列方法(push,shift)。 代码实现(栈): 代码实现(队列): 2.链表:构造链表结构,说白了就是链表的插入(尾插),移除(栈:末尾节点移除,队列:头结点移除) 代码实现(栈): 代码实现(队列): ...
分类:
Web程序 时间:
2018-11-05 00:39:17
阅读次数:
201
n个数据元素构成一个环,从环中任意位置开始计数,计到m将该元素从表中取出,重复上述过程,直至表中只剩下一个元素。 解题思路:用一个无头结点的循环单链表来实现n个元素的存储。循环单链表:尾指针指向头结点。这样指针可以循环移动。 可以使用两个指针来操作,将指针q指向需要操作的结点上,指针p指向需要操作结 ...
分类:
其他好文 时间:
2018-11-04 22:54:43
阅读次数:
148
问题描述:快速找到未知长度的单链表的中间结点 普通方法:首先遍历一遍单链表,以确定单链表的长度L,然后再从头结点出发,循环L/2次,找到单链表的中间结点。 高效算法(快慢指针):设置两个指针,*search,*mid都指向单链表的头结点。其中*search指针的移动速度是*mid指针移动速度的2倍。 ...
分类:
其他好文 时间:
2018-11-02 20:32:03
阅读次数:
222
1.单链表:用一组地址任意的存储单元存放线性表中的数据元素。以元素(数据元素的映象)+ 指针(指示后继元素存储位置)= 结点(表示数据元素)。 2.以线性表中第一个数据元素a1的存储地址作为线性表的地址,称作线性表的头指针。为了操作方便,在第一个结点之前加一个辅助结点“头结点”,以指向头结点的指针作 ...
分类:
其他好文 时间:
2018-10-29 11:54:21
阅读次数:
146