专栏首页Java学习网问题系列之Java中删除有序List的重复数据——提供两种方法

问题系列之Java中删除有序List的重复数据——提供两种方法

Java学习网(www.javalearns.com)提拱

现在给出一个有序的List,删除其中重复的元素,要求第个元素只能出现一次,并且是经过的排序的;

网络配图

比如:

给出 2->2->3,返回 2->3;

给出 2->2->3->5->5,返回 2->3->5;

要解决这个问题,首先要分析问题,找出问题的关键因素;经过分析我们可以知道要实现这个需求,必须使用循环语句配合正确的条件。下面提供了2种解决方案:

先定义一个基础类(2个方法都用到此类):

class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}

方法一、

public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null || head.next == null)
return head;
ListNode prev = head;
ListNode p = head.next;
while (p != null) {
if (p.val == prev.val) {
prev.next = p.next;
p = p.next;
prev = p;
p = p.next;
}
}
return head;
}

}

网络配图

方法二、

public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null || head.next == null)
return head;
ListNode p = head;
while (p != null && p.next != null) {
if (p.val == p.next.val) {
p.next = p.next.next;
} else {
p = p.next;
}
}
return head;
}
}

本文分享自微信公众号 - Java学习网(javalearns),作者:javalearns

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 编程不需要天赋和激情

    编程不需要天赋和激情 以往从来没有一种技能被神化到这样的高度: 你不仅得有天赋,还得具备激情,才能成为一名优秀的程序员。 好像那些写代码的人是早就决定干这一行...

    用户1289394
  • Java已快过时?斯坦福大学将JavaScript作为计算机科学入门课

    斯坦福大学的计算机科学入门课采用JavaScript,摈弃Java,但是它的基数很大。 ?   今年4月初,斯坦福大学开始试推行计算机科学入门课CS 106A的...

    用户1289394
  • Java中有关Null的9问题

    Java中有关Null的9问题 对于Java程序员来说,null是令人头痛的东西。时常会受到空指针异常(NPE)的骚扰。连Java的发明者都承认...

    用户1289394
  • LintCode 删除排序链表中的重复数字 II题目分析代码

    给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。 样例 给出 1->2->3->3->4->4->5->null,返回 1->2->5->...

    desperate633
  • LintCode-35.翻转链表

    给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null

    悠扬前奏
  • LeetCode Remove Linked List Elements

    Remove all elements from a linked list of integers that have value val. Example...

    desperate633
  • LintCode 回文链表题目分析代码

    链表由于其特殊的结构,没法像数组那样判断回文,所以比较原始的方法,先找到链表的中间节点,然后将后半部分反转,然后逐个比较即可。 链表中的算法,通常以寻找链表中...

    desperate633
  • 有环链表

    一份执着✘
  • LeetCode 19. Remove Nth Node From End of List题目分析代码

    样例 给出链表1->2->3->4->5->null和 n = 2. 删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.

    desperate633
  • Leetcode 82 Remove Duplicates from Sorted List II

    Given a sorted linked list, delete all nodes that have duplicate numbers, leavi...

    triplebee

扫码关注云+社区

领取腾讯云代金券