sentinal指向之前遍历过的所有unique元素组成的链表。lastUnique指向该链表的最后一个元素遍历时每发现一个unique元素(与相邻元素值不想等),将其append到lastUnique的后面就完事儿了。时间 O(n)空间 O(1)import java.util.*;public class Solution {    public ListNode deleteDuplicates (ListNode head) {      if (head == null) return null;            ListNode sentinal = new ListNode(-1);      ListNode lastUnique = sentinal;      ListNode n = head;      int lastVal = -1;            while (n != null) {        if (n.val != lastVal && (n.next == null || n.val != n.next.val)) {          lastUnique.next = n;          lastUnique = n;        }         lastVal = n.val;        n = n.next;      }            // 这一步不能漏, 不然链表尾端的重复元素还连在lastUnique后面      lastUnique.next = null;      return sentinal.next;    }}
点赞 0
评论 0
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务