LeetCode题:83删除排序链表中的重复元素 141环形链表

news2024/11/26 12:44:45

83删除排序链表中的重复元素

题目内容

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。

示例 1:

输入:head = [1,1,2]
输出:[1,2]

示例 2:

输入:head = [1,1,2,3,3]
输出:[1,2,3]

思路:

非递归法:这题很简单,只需遍历一遍有序链表,判断当前节点和下一个节点是否相同,如果相同,就跳过下一个节点,到下下一个节点,如图:时间复杂度:O(N)

递归法:如图

我们从图可以看到,1和1相等,那么我们头结点的next指向就是2了,那么这就出现了一个新的链表,我们就要删除这新的节点链表中的重复元素,依次类推,这不就是递归吗?

时间复杂度:O(N)

空间复杂度要比非递归的多

代码展示

非递归法:

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if(head == null) {
            return head;
        }
        ListNode listNode = head;

        while(listNode.next != null) {
            if(listNode.val == listNode.next.val) {
                listNode.next = listNode.next.next;
            } else {
                listNode = listNode.next;
            }
        }
         return head;
    }
}

递归法:

class Solution {
public ListNode deleteDuplicates(ListNode head) {
        if(head == null || head.next == null) {
            return head;
        }
        head.next = deleteDuplicates(head.next);
        return head.val == head.next.val ? head.next : head;
    }
}

141环形链表

题目内容

给你一个链表的头节点 head ,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。

如果链表中存在环 ,则返回 true 。 否则,返回 false 。

示例 1:

输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:

输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:

输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

思路:

这道题其实是一个追逐问题,想象有一个环形跑道,有一个男生和一个女生,男生跑步的速度是女生的2倍,那么在这个环形跑道中,两人在同一起点同时跑,那么男生是不是会比女生多跑一圈,在第一次遇见女生后,第二次遇见女生是女生刚好跑完一圈,男生刚好跑完2两圈,如果不同时跑呢?那女生是不是也迟早会被追上?

那么这个环形链表也一样,我们可以定义一个slow和fast链表,slow一次走一步,fast一次走两步,只要fast或者是fast.next不为null,就一直遍历这个链表,如果slow和fast相遇了,那么这个链表肯定是环形链表,如果没在遍历了,即fast为null或者是fast.next为空,那么这一定不是环形链表

代码展示

public class Solution {
    public boolean hasCycle(ListNode head) {
        if(head == null) {
            return false;
        }
        ListNode slow = head;
        ListNode fast = head;

        while(fast.next != null && fast.next.next != null) {
            slow = slow.next;
            fast = fast.next.next;
            if(slow == fast) {
                return true;
            }
        }
        return false;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1173314.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

下载安装PyCharm的步骤

1、首先进入Pycharm官网,并进行下载,日常使用社区版也是OK的 官网:https://www.jetbrains.com/pycharm/download/?sectionwindows 2、可以自定义路径进行安装,注意路径要全英哈 3、大家可以根据自己的需要来进行勾选 4、安装完成…

【漏洞复现】Webmin 远程命令执行(CVE-2019-15107)

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞验证 1.5、深度利用1、反弹Shell 1.6、修复建议1.7、参考链接 说明内容漏洞编号CVE-2019-15107漏洞…

蒙哥马利算法模乘(四)

一 蒙哥马利算法模乘介绍 蒙哥马利模乘算法主要为了进行大数运算a*b mod n,在介绍蒙哥马利模乘之前,先让我们来了解蒙哥马利约减。 1.1 蒙哥马利约减 a mod n 如果a是一个2048位的整数,n是一个1024位的整数,如果直接采用相除的方式,不论在空间还是时间上都会产生非常大…

【漏洞复现】Django_debug page_XSS漏洞(CVE-2017-12794)

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞分析3、漏洞验证 说明内容漏洞编号CVE-2017-12794漏洞名称Django_debug page_XSS漏洞漏洞评级影响范…

北京联通iptv组播配置

多年前折腾过iptv,近期搬家换了个大电视,打算把iptv配置好了,尽管不怎么看,但聊胜于无。 其实很简单,用到了一些工具,记录如下 1. openwrt配置 因为有软路由,所以就借助openwrt了,一…

2023年03月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 十进制数111转换成二进制数是?( ) A: 111 B: 1111011 C: 101111 D: 1101111 答案…

往事匆匆,值得怀念

不知不觉已经一年了 时间过得好快,各位赶路人,愿大家前程似锦,家庭美满。

智能·开源·安全|.NET Conf China 2023

点击蓝字 关注我们 大会介绍 .NET Conf China 2023是面向开发人员的社区峰会,延续 .NET Conf 2023的活动,庆祝 .NET 8的发布和回顾过去一年来 .NET 在中国的发展成果,它是由中国各地区的技术社区共同发起举办、知名企业和开源组织联合协办&am…

shiro 框架使用学习

简介 Shiro安全框架是Apache提供的一个强大灵活的安全框架Shiro安全框架提供了认证、授权、企业会话管理、加密、缓存管理相关的功能,使用Shiro可以非常方便的完成项目的权限管理模块开发 Shiro的整体架构 1、Subject ​ Subject即主体(可以把当前用户…

0X02

web9 阐释一波密码&#xff0c;依然没有什么 发现&#xff0c;要不扫一下&#xff0c;或者看一看可不可以去爆破密码 就先扫了看看&#xff0c;发现robots.txt 访问看看,出现不允许被访问的目录 还是继续尝试访问看看 就可以下载源码&#xff0c;看看源码 <?php $fl…

Nacos-2.2.2源码修改集成高斯数据库GaussDB,postresql

一 &#xff0c;下载代码 Release 2.2.2 (Apr 11, 2023) alibaba/nacos GitHub 二&#xff0c; 执行打包 mvn -Prelease-nacos -Dmaven.test.skiptrue -Drat.skiptrue clean install -U 或 mvn -Prelease-nacos ‘-Dmaven.test.skiptrue’ ‘-Drat.skiptrue’ clean instal…

强化学习的动态规划三

一、策略的改进 假设新的贪婪策略π0与旧的策略π效果相当&#xff0c;但并不优于π。由此得出vπvπ0&#xff0c;且根据之前的推导可以得出&#xff1a;对于所有的s∈S 这与贝尔曼最优方程相同&#xff0c;因此&#xff0c;vπ0是v∗&#xff0c;π和π0是最佳策略。因此&…

笔记本360wifi,wifi共享大师掉线,

笔记本上搭建的wifi热点&#xff0c;例如360wifi、wifi共享大师等&#xff0c;手机连接wifi后总是隔一段时间掉线。原因:网卡驱动和无线驱动有问题&#xff0c;需要更新或换成稳定的网卡驱动和无线驱动。 解决方案: ① 安装驱动精灵: ②点击驱动管理 ③ ④ ⑤进行阻止windo…

AI:60-基于深度学习的瓜果蔬菜分类识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

线扫相机DALSA软件开发套件有哪些

Win10和Win7系统完整SDK目录截图&#xff1a; Sapera Configuration 缓存与内存管理&#xff0c;以及通信端口配置工具&#xff0c;部分功能等效于Detection(查找相机)内的Settings。 Sapera Log Viewer 打开Log Viewer后会显示之前发生过的所有与Sapera LT软件有关的运行信息…

SSTI模板注入入门

一.关系&#xff1a;子类->父类 class A:passclass B(A):passclass C(B):passclass D(B):passcC() 1.__class__查看当前类 c&#xff1a;当前类 print(c.__class__) 2.__base__查看当前类的父类 print(c.__class__.__base__) c的父类的父类 print(c.__class__.__base_…

重生奇迹mu召唤师怎么加点?

召唤师在重生奇迹mu游戏里面是一个智力型的职业&#xff0c;所以智力自然就成为主要加点属性&#xff0c;但是此职业却又算是近身攻击&#xff0c;因为她的技能范围并不算远&#xff0c;而且还是呈现出一种半径趋势&#xff0c;一方面是攻击伤害&#xff0c;另一方面则是辅助造…

AI:58-基于深度学习的猫狗图像识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

AI:59-基于深度学习的行人重识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

Go的json序列化:Marshal与Unmarshal

简介 Json(Javascript Object Nanotation)是一种数据交换格式&#xff0c;常用于前后端数据传输。任意一端将数据转换成json 字符串&#xff0c;另一端再将该字符串解析成相应的数据结构&#xff0c;如string类型&#xff0c;strcut对象等。 1.Json Marshal&#xff1a;将数据编…