代码随想录算法训练营day3 | 203. 移除链表元素,707. 设计链表,206. 反转链表

news2025/1/17 6:16:07

目录

203. 移除链表元素

707. 设计链表

206. 反转链表


203. 移除链表元素

难度:easy

思路:

代码:

// 使用虚拟头结点
class Solution {
    public ListNode removeElements(ListNode head, int val) {
        if (head == null) {
            return head;
        }

        // 虚拟头结点
        ListNode dummy = new ListNode(-1, head);
        ListNode pre = dummy;
        ListNode cur = head;

        while (cur != null) {
            if (cur.val == val) {
                pre.next = cur.next;
                cur = cur.next;
            } else {
                pre = pre.next;
                cur = cur.next;
            }

        }
        return dummy.next;
    }
}

// 不使用虚拟头结点
class Solution {
    public ListNode removeElements(ListNode head, int val) {

        // 如果移除头结点
        while (head != null && head.val == val) {
            head = head.next;
        }
        // head有可能为空
        if (head == null) {
            return head;
        }

        ListNode pre = head;
        ListNode cur = head.next;

        while (cur != null) {
            if (cur.val == val) {
                pre.next = cur.next;
            } else {
                pre = pre.next;
            }
            cur = cur.next;
        }

        return head;
    }
}

707. 设计链表

707. 设计链表

难度:medium

思路:

代码:

class ListNode {
    int val;
    ListNode next;
    ListNode(){
    }
    ListNode (int val) {
        this.val = val;
    }
    ListNode (int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}

class MyLinkedList {
    private int size;
    private ListNode dummy;
    public MyLinkedList() {
        this.size = 0;
        this.dummy = new ListNode(-1);
    }
    
    public int get(int index) {
        if (index >= size || index < 0) {
            return -1;
        }
        ListNode currentNode = dummy;
        for (int i = 0; i <= index; i++) {
            currentNode = currentNode.next;
        }
        return currentNode.val;
    }
    
    public void addAtHead(int val) {
       addAtIndex(0, val);
    }
    
    public void addAtTail(int val) {
        addAtIndex(size, val);
    }
    
    public void addAtIndex(int index, int val) {
        if (index > size) {
            return;
        }

        ListNode currentNode = dummy;
        for (int i = 0; i < index; i++){
            currentNode = currentNode.next;
        }
        ListNode temp = currentNode.next;
        ListNode newNode = new ListNode(val, temp);
        currentNode.next = newNode;
        size++;
    }
    
    public void deleteAtIndex(int index) {
        if (index >= size || index < 0) {
            return;
        }

        ListNode currentNode = dummy;
        for (int i = 0; i < index; i++) {
            currentNode = currentNode.next;
        }
        currentNode.next = currentNode.next.next;
        size--;
    }
}

206. 反转链表

难度:easy

 

思路:

代码:

class Solution {
    public ListNode reverseList(ListNode head) {

        if (head == null) {
            return null;
        }
        
        ListNode pre = null;
        ListNode cur = head;
        ListNode next = head.next;

        while (cur != null) {
            cur.next = pre;

            pre = cur;
            cur = next;
            // 在进行最后一个反转后,next已经为null
            if (next != null) {
                next = next.next;
            }           
        }
        return pre;
    }
}

class Solution {
    public ListNode reverseList(ListNode head) {
        
        ListNode pre = null;
        ListNode cur = head;
        ListNode next = null;

        while (cur != null) {
            next = cur.next;
            cur.next = pre;
            pre = cur;
            cur = next;
        }

        return pre;
    }
}

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

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

相关文章

Waves 14 Complete对Mac和Windows系统的最低要求

Waves 14 Complete是一款功能齐全的音频编辑软件&#xff0c;适用于音乐制作、音频工程和声音设计等领域。它提供了一系列强大的工具和效果&#xff0c;帮助用户在音频处理过程中实现专业水平的效果和混音。 Waves 14 Complete包含了多个实用的插件&#xff0c;如均衡器、压缩…

垃圾收集器CMS-JVM(十一)

Jvm类的创建过程包括类的加载&#xff0c;类的验证&#xff0c;准备&#xff0c;分析&#xff0c;初始化。 验证是不是.class文件。 准备过程则是先赋值初始化的值&#xff0c;并不是直接赋值原始值。 分析比较复杂&#xff0c;会有静态链接处理和动态链接处理。 最后就是类…

亚马逊云科技,加速生成式AI的落地

编辑&#xff1a;阿冒 设计&#xff1a;沐由 “展望今天的世界&#xff0c;在机遇之外&#xff0c;更多事后我们看到的是前所未有的巨大挑战。事实证明&#xff0c;惟有通过创新、专注创新&#xff0c;方能挖掘和发现更多的增长机会。” 在2023亚马逊云科技中国峰会的第二天&am…

【笔记】oracle线上生产数据库使用exp的方式更新到本地

笔记来源 今天的任务是&#xff1a;将线上老的数据库里的数据同步到本地现有的二期数据库中来&#xff0c;即二期项目需要线上数据进行最后测试&#xff0c;于是就有了今天这篇&#xff0c;线上生产数据库更新到本地数据库的笔记。 由于数据量较大&#xff0c;我尝试过将线上…

建表与数据准备

自己新建数据库: create table Student(sid varchar(10),sname varchar(10),sage datetime,ssex nvarchar(10));insert into Student values(01 , 赵雷 , 1990-01-01 , 男); insert into Student values(02 , 钱电 , 1990-12-21 , 男); insert into Student values(03 , 孙风 ,…

原生微信小程序手把手创建发布评论效果

1.静态设计 1.1标题 1.1.1 wxml文件 <!-- 标题 --><view class"title">励志语句</view> 1.1.2 wcss文件 .title{font-size: 50rpx;text-align: center;/* 上左右下 */padding: 60rpx 0 30rpx; } 1.1.3显示 1.2方块卡片 1.2.1 wxml文件 <…

铰接式车辆的横向动力学仿真提供车辆模型研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

python数据处理方法——pkl格式文件

目录 1.pkl文件格式简介&#xff1a; 1.1 什么是 pkl 文件&#xff1f; 1.2 pkl文件和pmml文件的简单区别 1.3 pkl 文件的优点 1.4 使用场景 2.使用 Python 操作 pkl 文件 2.1 对象序列化为 pkl 文件&#xff08;将数据保存为pkl文件&#xff09; 2.2 从 pkl 文件中反…

JS逆向系列之猿人学爬虫第18题-jsvmp - 洞察先机

文章目录 目标网址加密参数分析Python 实现往期逆向文章推荐目标网址 https://match.yuanrenxue.cn/match/18题目标着难度是困难级别,主要还是vmp保护的JS代码调试困难,理清逻辑就会变得简单了 加密参数分析 请求第一页时没有加密参数,从第二页开始,url会携带t和v两个参数…

依次查找数组中指定字符的索引值从左侧开始查找和从右侧开始查找numpy.char.find();numpy.char.rfind()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 依次查找数组中指定字符的索引值 从左侧开始查找和从右侧开始查找 numpy.char.find()&#xff1b;numpy.char.rfind() [太阳]选择题 下列代码最后输出的结果是&#xff1f; import numpy as …

python 运行前端

到html目录下执行&#xff1a;python -m http.server 8080 &#xff08;看你的python版本python or python3 &#xff1f;&#xff09;

机器学习实践(2.2)LightGBM回归任务

前言 LightGBM也属于Boosting集成学习模型(还有前面文章的XGBoost)&#xff0c;LightGBM和XGBoost同为机器学习的集大成者。相比越来越流行的深度神经网络&#xff0c;LightGBM和XGBoost能更好的处理表格数据&#xff0c;并具有更强的可解释性&#xff0c;还具有易于调参、输入…

青岛大学_王卓老师【数据结构与算法】Week05_10_顺序栈的操作3_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c; 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础…

OpenTelemetry

OpenTelemetry&#xff08;简称为Otel&#xff09;是一个开源项目&#xff0c;旨在为分布式系统提供可观测性&#xff08;observability&#xff09;。它提供了一组标准化的API、工具和库&#xff0c;用于生成、收集和分析分布式应用程序的跟踪&#xff08;tracing&#xff09;…

Redis报错-CROSSSLOT keys in request don‘t hash in the same slot

背景 问题涉及&#xff1a;spring security、spring session、redis 问题描述 springbootspringsecurityspringsessionantd 登录功能的时候&#xff0c;在源码中使用到了redis的rename命令&#xff08;如下图所示&#xff09; 在这里就会报错 CROSSSLOT keys in request d…

微信小程序安装和使用 Vant Weapp 组件库

微信小程序安装和使用 Vant Weapp 组件库 1. Vant Weapp 介绍2. Vant Weapp 的 安装2.1. 通过npm安装2.2. 构建npm2.3. 修改 app.json2.4. 修改 project.congfig.json2.5. 测试一下&#xff0c;使用Vant Weapp提供的组件 1. Vant Weapp 介绍 Vant 是一个轻量、可靠的移动端组件…

字符函数和内存函数(二)

目录 一、strtok函数 二、strerror函数 三、memcpy函数 3.1memcpy函数的认识 3.2memcpy函数的模拟实现 四、memmove函数 4.1memmove函数的认识 4.2memmove函数的模拟实现 五、memcmp函数 5.1memcmp函数的认识 5.2memcmp函数的模拟实现 六、memset函数 七、字符分类函…

24 张图搞定 ICMP :最常用的网络命令 ping 和 tracert

ICMP IP 是尽力传输的网络协议&#xff0c;提供的数据传输服务是不可靠的、无连接的&#xff0c;不能保证数据包能成功到达目的地。那么问题来了&#xff1a;如何确定数据包成功到达目的地&#xff1f; 这需要一个网络层协议&#xff0c;提供错误检测功能和报告机制功能&#x…

Python爬虫——urllib_post请求百度翻译

post请求&#xff1a; post的请求参数&#xff0c;是不会拼接在url后面的&#xff0c;而是需要放在请求对象定制的参数中 post请求的参数需要进行两次编码&#xff0c;第一次urlencode&#xff1a;对字典参数进行Unicode编码转成字符串&#xff0c;第二次encode&#xff1a;将字…

GNN环境安装

参考&#xff1a; torch_geometric踩坑实战–安装与运行 亲测有效&#xff01;&#xff01; https://blog.csdn.net/m0_55245520/article/details/130424828pytorch 查看gpu cuda版本 https://blog.csdn.net/jacke121/article/details/93592487 x.1 安装 x.1.1 镜像信息补充…