给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
分析:
为了方便只用了一个节点遍历,基本思想是当前节点 node 和其下一节点 node.next 的值比较,如果值相等,直接将下一节点的 next 改为当前节点的 next,从而把 node.next 这个节点给跳过了,由于 JVM 有 GC,所以搞定
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null)
return head;
ListNode node = head;
while (node.next != null) {
if (node.val == node.next.val)
node.next = node.next.next;
else
node = node.next;
}
return head;
}
}