有序链表去重

有序链表去重

问题

这个题目说的是,给你一个单链表,这个单链表节点上的数字是有序的。对于出现多次的数字,你要把重复的去掉,只保留一个即可。最后返回去重后的单链表。

比如说,给你的有序单链表是:

1 -> 1 -> 2 -> 2 -> 4

去重后,你要返回的链表是:

1 -> 2 -> 4

代码

public class AlgoCasts {

  public class ListNode {
    int val;
    ListNode next;

    ListNode(int x) {
      val = x;
    }
  }

  // Time: O(n), Space: O(1)
  public ListNode removeDuplicatesInSortedList(ListNode head) {
    if (head == null) return null;
    ListNode cur = head, next = head.next;
    while (next != null) {
      if (cur.val == next.val)
        cur.next = next.next;
      else
        cur = cur.next;
      next = next.next;
    }
    return head;
  }

}

  转载请注明: ForwardXu 有序链表去重

 上一篇
合并K个有序链表 合并K个有序链表
合并K个有序链表问题 这个题目说的是,给你 K 个递增排序的单链表,你要把它们合成一个链表,并且保持递增排序。合成链表的节点直接使用 K 个链表中的节点即可,无需创建新节点。 比如说,给你以下 3 个有序链表: 1 -> 2 -> 4 1
2018-12-27
下一篇 
单链表删除数字 单链表删除数字
单链表删除数字问题 这个题目说的是,给你一个单链表和一个数字,你要删除节点上数字等于给定数字的那些节点,然后返回删除节点后的单链表。 比如说,给你的单链表是: 1 -> 2 -> 4 -> 1 -> 8 -> 1 要删除的数字是 1。那
2018-12-27
  目录