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

题目描述:存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。

返回同样按升序排列的结果链表。

示例说明请见LeetCode官网。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法一:链表遍历

首先,声明一个新的链表头结点newHead,last指向新的头结点newHead,cur指向老的头结点head,然后遍历链表head,遍历过程如下:

  • 声明一个boolean变量isRepeated来标识当前节点是否是重复节点;
  • 声明next为cur的next节点,通过循环过程找到下一个跟cur节点的数字不同的节点,并且判断当前节点是否是重复的并更新isRepeated;
  • 如果isRepeated为true,说明当前节点是重复的,则跳过这个重复节点,然后处理下一个节点;
  • 如果isRepeated为false,说明后面的节点没有和当前节点相同的,将当前节点加入到last的next节点中,然后处理下一个节点。

最后返回newHead的next节点即为结果。

public class LeetCode_082 {
public static ListNode deleteDuplicates(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode newHead = new ListNode(-1);
ListNode last = newHead, cur = head;
while (cur != null) {
// 当前节点是否是重复的标识
boolean isRepeated = false;
ListNode next = cur.next;
// 找到下一个跟cur节点的数字不同的节点,并且判断当前节点是否是重复的
while (next != null && next.val == cur.val) {
isRepeated = true;
next = next.next;
}
if (isRepeated) {
// 如果当前节点是重复的,则跳过这个重复节点
cur = next;
} else {
// 如果当前节点不是重复的,则作为last的下一个节点
last.next = new ListNode(cur.val);
last = last.next;
cur = next;
}
}
return newHead.next;
} public static void main(String[] args) {
ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(2); ListNode result = deleteDuplicates(head);
while (result != null) {
System.out.print(result.val + " ");
result = result.next;
}
}
}

【每日寄语】 你若等待,清风自来。等待可能是一阵风,等待的有可能是一个机会,等待的有可能是一个人,但你终归你得等,你不等,那个风是不会来的。

LeetCode-082-删除排序链表中的重复元素 II的更多相关文章

  1. 力扣(LeetCode)删除排序链表中的重复元素II 个人题解

    给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 思路和上一题类似(参考 力扣(LeetCode)删除排序链表中的重复元素 个人题解)) 只不过这里需要用到一个前 ...

  2. LeetCode 82. 删除排序链表中的重复元素 II(Remove Duplicates from Sorted List II)

    82. 删除排序链表中的重复元素 II 82. Remove Duplicates from Sorted List II 题目描述 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有 ...

  3. Java实现 LeetCode 82 删除排序链表中的重复元素 II(二)

    82. 删除排序链表中的重复元素 II 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4- ...

  4. [LeetCode] 82. 删除排序链表中的重复元素 II

    题目链接 : https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/ 题目描述: 给定一个排序链表,删除所有含有 ...

  5. LeetCode 82. 删除排序链表中的重复元素 II(Remove Duplicates from Sorted List II)

    题目描述 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4->4->5 输出: ...

  6. LeetCode 82 ——删除排序链表中的重复元素 II

    1. 题目 2. 解答 新建一个链表,并添加一个哨兵结点,从前向后开始遍历链表. 如果下一个结点的值和当前结点的值相等,则循环向后遍历直到找到一个和当前结点值不相等的结点: 反之,如果下一个结点的值和 ...

  7. LeetCode:删除排序链表中的重复元素【83】

    LeetCode:删除排序链表中的重复元素[83] 题目描述 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示 ...

  8. leetcode 83. 删除排序链表中的重复元素 及 82. 删除排序链表中的重复元素 II

    83. 删除排序链表中的重复元素 问题描述 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: ...

  9. Java实现 LeetCode 83 删除排序链表中的重复元素

    83. 删除排序链表中的重复元素 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1-> ...

  10. LeetCode(82):删除排序链表中的重复元素 II

    Medium! 题目描述: 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4->4- ...

随机推荐

  1. 羽夏闲谈—— C 的 scanf 的高级用法

    前言   今天看到博友发了个有关scanf的使用的注意事项,就是讨论缓冲区残存数据的问题,用简单的代码示例复述一下: #define _CRT_SECURE_NO_WARNINGS #include ...

  2. Android WebView组件 访问部分网页崩溃问题【已解决】

    最近刚接触Android,在测试WebView组件时发现总是出现崩溃现像: 提示:ERR_CLEARTEXT_NOT_PERMITTED 当时以为是权限问题,查找自己的AndroidManifest文 ...

  3. 异步回调实现- Guava Retryer

    为什么要使用重试利器Retryer 在实际开发中我们经常会遇到需要轮询查询一个接果,实现轮询的方式有很多种,我们经常要写许多代码,有时还会怕写出的代码有bug,如果已经有轮子了,我们就没必要重复造轮子 ...

  4. git rebase git merge

    Git rebase 使用方法 1. git checkout feature 2. git rebase master feature 相当于git rebase master + git chec ...

  5. MySQL MHA 高可用集群部署及故障切换

    MySQL MHA 高可用集群部署及故障切换 1.概念 2.搭建MySQL + MHA 1.概念: a)MHA概念 : MHA(MasterHigh Availability)是一套优秀的MySQL高 ...

  6. C++输入多行数据

    动机 编程题常用需求,比如输入两行数据. 解决思路:使用getline 程序 #include <iostream> #include <vector> #include &l ...

  7. 3.HTTP协议详解

    ### Web核心+HTTP协议 准备工作:XAMPP+PhpWindd+Aglieone HTTP协议简介 HTTP请求 最常用请求 GET请求获取URL所标识的资源 POST请求在URL所标识的资 ...

  8. 如何写出优雅又地道的Python代码?【转载】

    在Python社区文化的浇灌下,演化出了一种独特的代码风格,去指导如何正确地使用Python,这就是常说的pythonic.一般说地道(idiomatic)的python代码,就是指这份代码很pyth ...

  9. Solution -「LOCAL」逃生

    \(\mathcal{Description}\)   有 \(n\) 个人掉进了深度为 \(h\) 的坑里,第 \(i\) 个人的肩高为 \(a_i\),臂长为 \(b_i\).设当前坑里人的集合为 ...

  10. 二、MyBatis基础配置应用实例

    核心配置文件sqlMapConfig.xml Mybatis核心配置文件层级关系 1)environments标签 2)mapper标签 eg: 3)properties标签 数据源配置参数抽取至jd ...