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;
}
}