剑指offer试题编程练习44(java) 删除链表中重复的结点_一路繁花相送的博客-程序员宅基地

技术标签: java  链表  数据结构与算法  

题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

思路:首先明确该链表是一个排序链表,也就是说若出现重复的结点,则这些结点在链表中必定相邻;还需要明确的一点是只要出现重复的结点,则相同的结点都删除;该题我觉得最主要的问题是我们需要找到头结点,因为头结点也许就是一个重复的结点,需要把该结点删除,所以我们可以再新建一个结点,让该结点指向头结点,返回时直接返回该结点的下一个结点即可。

import java.util.List;
import java.util.ArrayList;
/*
 public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    public ListNode deleteDuplication(ListNode pHead)
    {
       //首先判断链表的头结点极其下一个结点是否为空
        if(pHead==null||pHead.next==null){
            return pHead;
        }
        //新建一个空结点 让其指向链表的头结点
        ListNode Head = new ListNode(0);
        Head.next = pHead;
        ListNode pre = Head;
        ListNode last = Head.next;
        while(last!=null){
            //判断相邻的结点是否相等
            if(last.next!=null&&last.val==last.next.val){
                while(last.next!=null&&last.val==last.next.val){
                    last = last.next;
                }
                pre.next = last.next;
                last = last.next;
            }else{
                pre = last;
                last = last.next;
            }
        }
        return Head.next;
    }
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41881277/article/details/105681624

智能推荐

shop--12.微信测试号的申请和获取微信用户信息_weixin_30596165的博客-程序员宅基地

在咱们自己的程序里面编写servlet以响应微信号在接下来的步骤中,我们将在测试号里面设置接口配置信息的URL,一经设置,微信公众号便会发请求到我们设置好的URL去,我们必须编写程序应答才能顺利连通微信公众号,因此咱们需要编写相应的响应程序需要编写两个类【SignUtil】 1 /** 2 * 微信请求校验工具类 3 */ 4 public class SignUtil...

51单片机如何用c语言位定义,嵌入式编程(一):51单片机如何将函数 定义到指定程序地址..._weixin_39595271的博客-程序员宅基地

在单片机编程使用中,会涉及到将某些函数定义到指定的code区。此时需要对工程文件进行配置修改才可完成。本期针对单片机平台做出说明介绍1、测试目标将函数testaddr定义到0x6000地址2、测试环境LKT4106加密芯片算法工程、KEIL-C51编译软件、3、实现步骤3.1 使用KEIL软件导入LKT4106算法工程(KEIL软件基本操作不再敷述,如不清楚请自行百度)3.2 在App_Main....

Multi-Task Convolutional Neural Network for Face Recognition阅读笔记_芃芃其麦的博客-程序员宅基地

1.论文简介 ●单任务学习:输入一个pose给出一个ID,通过训练得到模型,每个pose照片和ID得到一种映射关系,没有体现出同一个人之间的关联性,也没有区分开不同人之间的区别性; ●多任务学习:给出一个人的多角度照片,一起训练一个人的多张不同pose照片,这样得到的特征就融合了一个人的多pose的特征,同时也把不同ID特征很好的区分开;●现在解决人脸识别效果的普遍方法是: 提升基

深度学习(七)K近邻算法总结_Killwaiter的博客-程序员宅基地_k近邻算法实验心得体会

1.K近邻算法可以解决多分类问题,也可以解决回归问题2.KNeighborsRegressor类用knn解决回归问题的类3.缺点: 效率低、高度数据相关、预测结果不具有可解释性、维数灾难(随着维度的增加,看似相近的两个点直接之间的距离越来越大,解决方法:降维)4.使用一个机器学习算法流程:(1)把数据集分为训练集和测试集(2)把训练数据进行归一化(3)将测试数据集进行归一化(4)把测试的数据集放入训练出来的模型中得出准确度...

卸载、指定卸载 .NET Core Runtime and SDK_weixin_30644369的博客-程序员宅基地

卸载、指定卸载 .NET Core Runtime and SDK 原文:卸载、指定卸载 .NET Core Runtime and SDK项目使用的 Nuget 包,比如Microsoft.AspNetCore.App等的版本号要与.NET Core 版本号(不是SDK版本号,后续说明)保持一致,否则编译或者运行的时候可能会出现一些稀奇古...

go 基础学习总结_抱猫人的博客-程序员宅基地

go语言基础1.go语言的注意点变量名大写,意味着变量是包外可见的,可以跨包使用。go语言的四个主要声明:变量var、常量const、类型type、函数func。2.变量声明var name type = expression 类型和表达式(初始化)可以省略,但不能全部都省略,如果变量未初始化,默认以零值初始化。name := expreesion 短变量声明,可以用来声明和初始化局部变量。基本变量:uintxx(xx表示数据的大小16、32…)、浮点数floatxx、复数、布

随便推点

资产饼状图_这可能是个坑的博客-程序员宅基地

前言:最近需要项目中需要使用到饼状图呈现用户的账户资金相关信息,于是顺手写了一个。  效果图:   主要思路:环形饼状图实际上是多个扇形拼接成的,最后在中间覆盖白色圆,达到一个空心的效果。区块之间的间隔则是固定的一个角度偏移值。 涉及的主要类:PIEChatView.class      该类继承自View,为控件的主体类PIEChatUtils.class      自定义工具类,主要是浮点数加...

linux下Mplayer的安装过程_专注嵌入式的博客-程序员宅基地

Mplayer的下载需要下载四类文件:MPlayer-1.0rc1.tar.bz2(安装文件)all-20071007.tar.bz2(解码器1)windows-all-20071007.zip(解码器2)BlueHeart-1.5.tar.bz2(皮肤)subfont.ttf(字体)linux的软件最好从官方网站下载,以确保质量,此为其官方地址www1.mpl

计算机鼠标游戏教学法,小学信息技术游戏型教学法初探_是加菲哒的博客-程序员宅基地

游戏教学法就是以游戏的形式,使学生在激烈的竞赛中,在无比的兴奋中,甚至是在刺激和上瘾中,不知不觉地学到了教材中的内容,或者学到了青少年必须掌握的知识。学生爱上信息技术课,但不全是因为爱学信息技术知识,爱上课的原因是因为可以趁老师不注意玩一玩游戏。游戏也就因此成了信息技术教师的一个劲敌,有些教师索性就把计算机上所有的游戏,甚至Windows自带的游戏也删掉了,可还是抓不住学生的心。有时学生宁愿自己漫...

Hyperledger Fabric-sdk-java_weixin_30853329的博客-程序员宅基地

Hyperledger Fabric-sdk-java2018年04月18日 23:36:02l_ricardo阅读数 975更多分类专栏:区块链java版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/l_ri...

循环在c语言中的作用,C语言循环基础知识(附代码示例)_林中有一只小猫猫的博客-程序员宅基地

C语言循环基础知识(附代码示例)C语言中的循环语句的作用是为了使同一个事物具有相同的操作,这可以大大减少程序的复杂性,能够提高程序的运行效率。本文是百分网小编搜索整理的关于C语言循环基础知识(附代码示例),供参考学习,感兴趣的小伙伴们可以参考一下!想了解更多相关信息请持续关注我们应届毕业生考试网!有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接...

智能车 有来有往 单收单发超声波模组 STM32CubeMx HAL库_长生君的博客-程序员宅基地_单收单发超声波模块

运行环境Windows10 STM32CubeMX___Version 6.1.0 Keil5(MDK5)___Version 5.27简介这是一个针对智能车有来有往 单收单发超声波模组的一个教程模组图片一、参数简介 最远接收距离: >5 米 最短接收距离: <4 厘米 最大接收角度: >90 度 数据波动范围: <3 毫米 模块工作电压: 5V 模块工作方式: 串口 模块发送频率: 50HZ ..

推荐文章

热门文章

相关标签