【链表】-Lc83-删除有序链表中的重复元素(快慢双指针,slow,fast)

写在前面

  最近想复习一下数据结构与算法相关的内容,找一些题来做一做。如有更好思路,欢迎指正。


目录

  • 写在前面
  • 一、场景描述
  • 二、具体步骤
    • 1.环境说明
    • 2.代码
  • 写在后面


一、场景描述

  删除有序链表中的重复元素。

示例:
输入:1->2->3->3->5
输出:1->2->3->5

二、具体步骤

1.环境说明

名称说明
IntelliJ IDEA2019.2

2.代码

以下为Java版本实现:

public class Lc83_deleteDuplicates {public static void main(String[] args) {ListNode n5 = new ListNode(5);ListNode n31 = new ListNode(3, n5);ListNode n3 = new ListNode(3, n31);ListNode n2 = new ListNode(2, n3);ListNode head = new ListNode(1, n2);ListNode.print(head);System.out.println();ListNode.print(deleteDuplicates(head));}/*** 约束条件:有序链表* 返回值:链表** 注意条件判断** 思路:* 有序链表,那么重复的值就会紧挨着** 使用快慢双指针,* 如果值相等,fast就往后去找不相等的值* 当值不相等时,就把 fast 的值给 slow.next,然后2个指针同时向后移动** 循环结束,慢指针和后面的节点断开** 定义 slow = head, fast = head.next* while循环* if (fast != null) slow.next = fast; slow = slow.next* fast = fast.next** slow.next = null** @param head* @return*/private static ListNode deleteDuplicates(ListNode head) {if (head == null) {return null;}if (head.next == null) {return head;}ListNode slow = head, fast = head.next;while (fast != null) {if (slow.val != fast.val) {slow.next = fast;slow = slow.next;}fast = fast.next;}slow.next = null;return head;}static class ListNode {int val;ListNode next;public ListNode() {}public ListNode(int val) {this.val = val;}public ListNode(int val, ListNode next) {this.val = val;this.next = next;}public static void print(ListNode head) {while (head != null) {if (head.next == null) {System.out.print(head.val);} else {System.out.print(head.val + ", ");}head = head.next;}}}
}

写在后面

  如果本文内容对您有价值或者有启发的话,欢迎点赞、关注、评论和转发。您的反馈和陪伴将促进我们共同进步和成长。

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

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

相关文章

避免Arrays.asList陷阱:优雅处理结构性修改的方法

临近年终,项目交付排期比较紧张,导致很多时候,Code Review 往往是走马观花,没有严格执行。最近,一个实习生就产生了一个十分低级的代码BUG。笔者感觉这个问题,对于实习生,尤其是刚入职的 应届 J…

幻兽帕鲁mod安装指南(自用mod)

以下mod仅steam单机安装验证有效! 网址:https://www.nexusmods.com/palworld/mods/?BH2 游戏安装路径参考:D:\Steam\steamapps\common\Palworld\Pal\Binaries\Win64\Mods 一、功能性MOD 首先安装mod环境UE4SS xinput UE4SS xinput 安装步骤…

浅谈交换原理(3)——交换网络

一、基本概念 交换网络是由若干个交换单元按照一定的拓扑结构和控制方式构成的网络。交换网络的三个基本要素是:交换单元、不同交换单元间的拓扑连接和控制方式。 1.1 单机交换网络与多级交换网络 交换网络按拓扑连接方式可分为:单级交换网络和多级交换网…

版本控制器Git

目录 背景 图形化界面 下载安装或使用网页版 安装图形化界面 注册账号 创建仓库​ 创建本地仓库 ​创建项目到本地工作目录 三板斧 git add git commit git push 注意 命令行 Git和Gitee/Github的区别? 版本控制器是什么? 本地仓库VS…

综合回溯,剪枝,暴搜

目录 力扣1863.找出所有子集的异或总和再求和 力扣47.全排列II​编辑 力扣17.电话号码的字母组合电话号码的字母组合https://leetcode.cn/problems/letter-combinations-of-a-phone-number/​编辑 力扣22.括号生成 力扣1863.找出所有子集的异或总和再求和 class Solution {in…

第三百一十三回

文章目录 1. 概念介绍2. 实现方法2.1 obscureText属性2.2 decoration属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何实现倒计时功能"相关的内容,本章回中将介绍如何实现密码输入框.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍…

GEE入门篇|栅格数据集概述(四):其他卫星产品

目录 1.甲烷数据集 2.天气及气候数据 3.预先分类的土地用途和土地覆盖数据集 3.1ESA WorldCover 3.2 全球森林变化数据集 卫星还可以收集有关气候、天气和大气中存在的各种化合物的信息。这些卫星利用部分电磁频谱,以及不同物体和化合物在不同波长的阳光照射下…

嵌入式C语言学习——基于Linux与GCC

Linux终端创建文件指令: https://blog.csdn.net/xtho62/article/details/118194873 vim编辑器基本指令 1.过vim编辑器打开/创建文件:vim 文件名 2.进入文件,默认在正常模式,按 i 进入编辑模式 3.在编辑模式中,按ESC退出…

golang windows 环境搭建 环境配置

golang windows 环境搭建 环境配置 Golang学习之路一环境搭建 MacBook Linux 树莓派raspberrypi安装Golang环境 官网下载地址: https://go.dev/dl/ https://golang.google.cn/dl/ 下载对应系统版本,例如windows 64位系统,下载:xxx.window…

【Langchain Agent研究】SalesGPT项目介绍(一)

【2024最全最细LangChain教程-13】Agent智能体(二)-CSDN博客 之前我们介绍了langchain的agent,其实不难看出,agent是更高级的chain,可以进行决策分析、可以使用工具,今天我们开始开启一些更高阶的课程&…

【算法题】95. 不同的二叉搜索树 II

题目 给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。 示例 1: 输入:n 3 输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3…

【机器学习】单变量线性回归

文章目录 线性回归模型(linear regression model)损失/代价函数(cost function)——均方误差(mean squared error)梯度下降算法(gradient descent algorithm)参数(parame…

鸿蒙开发系列教程(十六)--日志处理

console控制台输出 以格式化输出方式打印调试信息 console.debug() console.debug(‘debug。。。’ ) 以格式化输出方式打印日志信息 console.log() console.log(‘info。。。’) 以格式化输出方式打印警告信息 con…

ubuntn20 搭建 redmine

安装数据库 更新包列表:sudo apt update 安装MySQL服务器:sudo apt install mysql-server 运行安全性脚本:MySQL服务器安装后,运行以下命令以加固安装:sudo mysql_secure_installation 这个脚本将引导您完成几个安全选…

Nginx限流设置

1.反向代理(建议先看正向代理,反向代理则是同样你要与对方服务器建立连接,但是,代理服务器和目标服务器在一个LAN下,所以我们需要与代理服务器先建交,再由他获取与目标服务器的交互,好比一个带刀侍卫守护着目标服务器) 屏蔽目标服务器的真实地址,相对安全性较好&am…

为什么在git操作中,要按照commit、pull、push的顺序

在Git操作中,按照commit、pull、push的顺序进行操作的主要原因是为了避免代码冲突和保持代码库的同步。下面是详细的解释: Commit: 首先进行commit操作是为了将本地的代码改动保存到一个清晰的版本历史中。这样做有几个好处: 你可以为这次提交…

ubuntu下修改hosts读写权限

ubuntu下修改hosts文件的操作: 由于需要在hosts文件下添加ip地址信息,但是初始情况下系统该文件为只读权限无法修改,具体操作如下所示; 1.cd到系统etc目录下,执行如下命令,此时会提示输入密码,直接输入回…

PgSQL技术内幕 - case when表达式实现机制

PgSQL技术内幕 - case when表达式实现机制 CASE表达式如同 C语言中的if/else语句一样,为SQL添加了条件逻辑处理能力,可以根据不同条件返回不同结果。PgSQL支持两种语法:简单表达式和搜索表达式。 1、搜索表达式 语法如下: CASE WH…

掼蛋牌桌上的默契-牌语解读篇

掼蛋不仅仅是个人战斗,也是和队友之间的默契与配合的战斗。长时间合作的玩家间往往能够通过一些特定的出牌方式传递信息,这些“暗号”或“牌语”成为了他们都顺利夺取胜利的秘密武器。 这些技巧都需要在日常实践中留心捕捉,用心理解和领悟&am…

1978-2022年各省家庭恩格尔系数(分城镇、农村)

1978-2022年各省家庭恩格尔系数(分城镇、农村) 1、时间:1978-2022年 2、指标:城镇家庭恩格尔系数、农村家庭恩格尔系数 3、来源:统计年鉴、省统计公报 4、范围:31省 5、指标解释:恩格尔系数…