LeetCode83.删除排序链表中的重复元素
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。
题解
遍历:时间复杂度
从前往后扫描整个链表,用cur保存新链表的最后一个结点。由于整个链表是排好序的,所以若cur与当前结点的值不相等,则添加到cur链表后面。
代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null) return head;
ListNode cur = head;
for (ListNode p = head.next; p != null; p = p.next) {
if (p.val != cur.val) {
cur = cur.next = p;
}
}
cur.next = null;
return head;
}
}