博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序链表中删除重复元素II
阅读量:6437 次
发布时间:2019-06-23

本文共 1399 字,大约阅读时间需要 4 分钟。

hot3.png

原题

  Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

  For example,
  Given 1->2->3->3->4->4->5, return 1->2->5.
  Given 1->1->1->2->3, return 2->3.

题目大意

  给定一个排好序的单链表,删除所有重复的元素。只留下只有一个值的元素。

解题思路

  给链表接上一个辅助结点root,root接到原来的头部,引用这个头部和辅助的指针,对重重的元素进行删除。

代码实现

实现类

public class Solution {    public ListNode deleteDuplicates(ListNode head) {        ListNode root = new ListNode(0); // 头结点        root.next = head;        ListNode p = head;        ListNode q = root; // 记录最后一个没有重复的元素,开始指向头结点        int delta = 0; // 元素重复个数        while (p != null && p.next != null) {            if (p.val == p.next.val) { // 如果相邻两个数相同                delta++;                p = p.next; // 移动到下一个结点            } else { // 如果相邻两个结点不相同                if (delta == 0) { // 值为p.val的结点没有重复                    q.next = p; // 链接到没有复的元素                    q = p; // 指向最后一个未重复的元素                    p = p.next; // 移动到下一个结点                } else { // 值为p.val的结点有重复                    p = p.next; // 移动到下一个元素                    q.next = p.next; // 去掉重复的元素                    delta = 0; // 元素重复个数设置为0                }            }        }        if (delta != 0) { // 如果最后一个元素是复的就去掉            q.next = null;        } else { // 如果没有重复就开链接到表尾            q.next = p;        }        return root.next;    }}

转载于:https://my.oschina.net/u/2822116/blog/808257

你可能感兴趣的文章
如何基于Spark进行用户画像?
查看>>
光伏发电对系统冲击大 “十三五”电力规划重点增强调峰能力
查看>>
全球19家值得关注的物联网安全初创企业
查看>>
Android下的junit 单元测试
查看>>
这几个在搞低功耗广域网的,才是物联网的黑马
查看>>
主流or消亡?2016年大数据发展将何去何从
查看>>
《大数据分析原理与实践》一一第3章 关联分析模型
查看>>
《挖掘管理价值:企业软件项目管理实战》一2.4 软件设计过程
查看>>
Capybara 2.14.1 发布,Web 应用验收测试框架
查看>>
ExcelJS —— Node 的 Excel 读写扩展模块2
查看>>
《数字短片创作(修订版)》——第一部分 剧本创作 第1章 数字短片创意技法 剧本创作的构思...
查看>>
MIT 学生挑战新泽西索取挖矿程序源代码的要求
查看>>
实践 | 不同行业WMS选型策略及需要注意的一些问题
查看>>
MaxCompute与OSS非结构化数据读写互通(及图像处理实例)
查看>>
【F3简介】一张图看懂FPGA-F3实例
查看>>
bash环境(变量与bash配置文件)
查看>>
Server Hard drive mode
查看>>
smb服务器配置过程遇到错误及解决
查看>>
java杂乱
查看>>
在Linux上安装Python3.6.1
查看>>