草庐IT

Listnode

全部标签

leetcode刷题之回文链表

目录做题思路代码实现1.找到链表的中间节点2.反转中间节点之后的链表3.判断倒置的后半部分的链表是否等于前半部分的链表整体代码展示总结:这里是题目链接。234.回文链表-力扣(Leetcode) 这道题目的意思是:判断该链表中后半部分倒置是否跟前半部分相同,如果相同就返回true,否则就返回false。做题思路1.先用快慢指针来找到该链表的中间节点。2.倒置后半部分的链表。3.判断倒置的部分是否跟前半部分相同。代码实现1.找到链表的中间节点使用一个慢指针slow,一次走一步,一个快指针fast,一次走两步。当快指针fast为null或者走到尾节点时,slow所在的节点就是该链表的中间节点。/*

【数据结构】链表OJ(二)

Yan-英杰的博客  悟已往之不谏知来者之可追目录一、反转链表二、合并两个有序链表三、链表分割四、链表的回文结构一、反转链表 输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]输入:head=[1,2]输出:[2,1]示例3:输入:head=[]输出:[]提示:链表中节点的数目范围是[0,5000]-5000方法一:        代码解析:   structListNode*reverseList(structListNode*head){if(head==NULL){returnNULL;}structListNode*n1,*n2,*n3;n1=NULL;n2=head;

【数据结构】链表OJ(二)

Yan-英杰的博客  悟已往之不谏知来者之可追目录一、反转链表二、合并两个有序链表三、链表分割四、链表的回文结构一、反转链表 输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]输入:head=[1,2]输出:[2,1]示例3:输入:head=[]输出:[]提示:链表中节点的数目范围是[0,5000]-5000方法一:        代码解析:   structListNode*reverseList(structListNode*head){if(head==NULL){returnNULL;}structListNode*n1,*n2,*n3;n1=NULL;n2=head;

每日算法之链表中环的入口结点

JZ23链表中环的入口结点描述给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。解析环很大在前面我们提到过快慢指针,判断是否有环。如果有环,在来找环的入口。如果没环直接返回null即可,我们假设是有环的,那么会有两种情况,一种是O型,一种是6型,其实原理都一样,这里主要看一下6字型的环,他会有两种情况,如果有环,那么快指针走过的路径就是图中a+b+c+b,慢指针走过的路径就是图中a+b,因为在相同的时间内,快指针走过的路径是慢指针的2倍,所以这里有a+b+c+b=2*(a+b),整理得到a=c在相遇的时候再使用两个指针,一个从链表起始点开始,一个从相遇点开始,每

每日算法之链表中环的入口结点

JZ23链表中环的入口结点描述给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。解析环很大在前面我们提到过快慢指针,判断是否有环。如果有环,在来找环的入口。如果没环直接返回null即可,我们假设是有环的,那么会有两种情况,一种是O型,一种是6型,其实原理都一样,这里主要看一下6字型的环,他会有两种情况,如果有环,那么快指针走过的路径就是图中a+b+c+b,慢指针走过的路径就是图中a+b,因为在相同的时间内,快指针走过的路径是慢指针的2倍,所以这里有a+b+c+b=2*(a+b),整理得到a=c在相遇的时候再使用两个指针,一个从链表起始点开始,一个从相遇点开始,每

每日算法之删除链表中重复的结点

JZ76删除链表中重复的结点题目在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5处理后为1->2->5方法1哈希表进行删除思路算法实现LinkedHashMap实现顺序插入,不过查询速度会比较慢具体做法:step1:用哈希表统计每个字符的次数。step2:在put前进行判断,如果有值则在原有的值进行+1,没有则默认值+1。step3:对map进行遍历,对计数为1的值进行创建ListNode对象,然后拼接成一个链表。代码packagemid.JZ76删除链表中重复的结点;importjava.util

每日算法之删除链表中重复的结点

JZ76删除链表中重复的结点题目在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5处理后为1->2->5方法1哈希表进行删除思路算法实现LinkedHashMap实现顺序插入,不过查询速度会比较慢具体做法:step1:用哈希表统计每个字符的次数。step2:在put前进行判断,如果有值则在原有的值进行+1,没有则默认值+1。step3:对map进行遍历,对计数为1的值进行创建ListNode对象,然后拼接成一个链表。代码packagemid.JZ76删除链表中重复的结点;importjava.util

【刷题笔记】之牛客面试必刷TOP101(1)

目录1.反转链表(双链表头插法/栈)2.链表内指定区间反转3.链表中的节点每k个一组翻转4.合并两个排序的链表5.合并k个已排序的链表 链接:牛客面试必刷TOP1011.反转链表(双链表头插法/栈)题目链接 反转链表_牛客题霸_牛客网(nowcoder.com)题目要求题目分析(新建链表头插法)publicclassSolution{publicListNodeReverseList(ListNodehead){ListNodenewHead=null;while(head!=null){ListNodetmp=head.next;//使用头插法head.next=newHead;newHea

【刷题笔记】之牛客面试必刷TOP101(1)

目录1.反转链表(双链表头插法/栈)2.链表内指定区间反转3.链表中的节点每k个一组翻转4.合并两个排序的链表5.合并k个已排序的链表 链接:牛客面试必刷TOP1011.反转链表(双链表头插法/栈)题目链接 反转链表_牛客题霸_牛客网(nowcoder.com)题目要求题目分析(新建链表头插法)publicclassSolution{publicListNodeReverseList(ListNodehead){ListNodenewHead=null;while(head!=null){ListNodetmp=head.next;//使用头插法head.next=newHead;newHea

leetcode 148. Sort List 排序链表(中等)

一、题目大意给你链表的头结点head,请将其按升序排列并返回排序后的链表。示例1:输入:head=[4,2,1,3]输出:[1,2,3,4]示例2:输入:head=[-1,5,3,4,0]输出:[-1,0,3,4,5]示例3:输入:head=[]输出:[]提示:链表中节点的数目在范围[0,5*104]内-105进阶:你可以在O(nlogn)时间复杂度和常数级空间复杂度下,对链表进行排序吗?来源:力扣(LeetCode)链接:https://leetcode.cn/problems/sort-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。二、解题思路用快慢指针将列表