链表
文章平均质量分 92
wenlyq
这个作者很懒,什么都没留下…
展开
-
51 输出单向链表中倒数第k个结点
题目描述输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。链表结点定义如下:struct ListNode{int m_nKey;ListNode* m_pNext;};详细描述:接口说明原型:ListNode* FindKthToTail(ListNode* pListHead, unsignedint k);输入参数:Lis...原创 2019-01-16 21:18:32 · 234 阅读 · 0 评论 -
删除链表中重复的结点
题型1 删除重复的节点,重复的节点不保留题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5需要考虑第一个节点重复的情况,所以创建一个头节点,保证头节点不会重复,头节点指向head,两个指针,pre 和current...原创 2019-03-29 20:31:35 · 118 阅读 · 0 评论 -
链表中环的入口结点
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。1:判断链表是否带环:判断有环的方法就是用两个快慢指针p1、p2,p1的速度为P2的两倍,两个指针同时从链表的头结点开始出发,当两个结点再一次相遇且相遇点不是最后一个结点时,说明此链表有环。2:、若有环,找环的入口:①当P1和P2在PM相遇时:P1走过的路程(结点数):S快=L+X+n*R;P2走过...原创 2019-03-29 19:14:33 · 99 阅读 · 0 评论 -
孩子们的游戏(圆圈中最后剩下的数)
题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一...原创 2019-03-25 17:47:57 · 72 阅读 · 0 评论 -
python线性表
顺序表顺序表,将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示。数据元素本身连续存储,每个元素所占的存储单元大小固定相同,元素的下标是其逻辑地址,而元素存储的物理地址(实际内存地址)可以通过存储区的起始地址Loc (e0)加上逻辑地址(第i个元素)与存储单元大小(c)的乘积计算而得,即:Loc(ei) = Loc(e0) + c*i,时间复杂度为O(1)。如果...原创 2019-03-25 14:22:20 · 3888 阅读 · 0 评论 -
两个链表的第一个公共结点
题目描述输入两个链表,找出它们的第一个公共结点。思路:利用列表# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def FindFirstCommonNode(se...原创 2019-03-21 15:54:10 · 59 阅读 · 0 评论 -
二叉搜索树与双向链表
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:递归1.将左子树构造成双链表,并返回链表头节点。2.定位至左子树双链表最后一个节点。3.如果左子树链表不为空的话,将当前pRootOfTree追加到左子树链表。4.将右子树构造成双链表,并返回链表头节点。5.如果右子树链表不为空的话,将该链表追加到pRoot...原创 2019-03-05 22:02:20 · 79 阅读 · 0 评论 -
复杂链表的复制
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路:递归,创建label指向的newnode;newnode.next=clone()递归;newnode.random=head.random# -*- coding:...原创 2019-03-05 21:13:26 · 76 阅读 · 0 评论 -
合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。递归:注意链表为空的情况;# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution...原创 2019-02-28 21:58:02 · 87 阅读 · 0 评论 -
反转链表
题目描述输入一个链表,反转链表后,输出新链表的表头。思路一:非递归*head为空时,直接返回null;*head为当前结点,pre为当前结点的前一结点,next为当前结点的下一结点。*pre结点可以反转指向,但反转之后如果不用next结点保存next结点的话,链表就断开了*循环:先用next保存下一个结点的信息,保证单链表不会因为失去head结点的原next结点而就此断裂;保存完n...原创 2019-02-28 21:40:10 · 61 阅读 · 0 评论 -
链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。思路一:*两个指针fast和slow,让两个指针都指向头结点;*让fast走(k-1)步(1~k-1),到达第k个节点;*两个指针同时往后移动,当fast到达末尾的时候,slow所在位置就是倒数第k个结点注意 head为空,k<=0;以及节点.next 为空的判断/*public class ListNode { in...原创 2019-02-28 21:15:33 · 63 阅读 · 0 评论 -
从尾到头打印链表
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。思路一:创建一个list,将链表值加入;然后反转输出python# -*- coding:utf-8 -*-class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution...原创 2019-02-24 21:21:03 · 68 阅读 · 0 评论 -
链表
链表中环的入口地址思路1:慢指针p1,快指针p2,当p2!=null or p2.next!=null, p1每次走一步,p2每次走两步,当p1=p2,到达相遇点然后p2从链表头开始,p1继续从相遇点走,以相同速度走,下次相遇时就是链表的入口思路2:创建set,如果节点不为空,则循环,节点不在set中,则加入;在set中,说明已经循环了,为入口点,返回该节点# -*- coding:utf...原创 2019-07-31 13:29:02 · 219 阅读 · 0 评论