牛客题解-NC25删除有序链表中重复的元素

题目

删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次 例如: 给出的链表为1→1→2,返回1 →2. 给出的链表为1 →1→2→3→3,返回1 →2→3.

示例1

输入:

1
{1,1,2}

输出:

1
{1,2}

思路

分析

用一个指针就可以实现,对指针当前位置和下一位置的值进行比较。

相同:删除下一位置的节点

不同:指针移动到下一位置

直到链表尾。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.util.*;

/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/

public class Solution {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
if(head == null) return head;
ListNode tmp = head;
while(tmp.next!=null){
if(tmp.next.val == tmp.val){
tmp.next = tmp.next.next;
}else{
tmp = tmp.next;
}
}
return head;

}
}