leetcode [#83]

目录

题目

Given a sorted linked list, delete all duplicates such that each element appear only once.

Example:
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.


解决方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/

public class Solution {
public ListNode deleteDuplicates(ListNode 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;
}
}

注意事项

  1. 链表去重,使用一个p指针指向头结点,开始遍历该链表,如果当前元素和后一个元素值不同,指针后移一位;如果相同,则当前元素指向后一个元素之后的元素,也就是把相同的两个元素的后者删除掉。