难度:简单
类型:链表
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
由于是有序链表,只需要对比链表前后两个结点。
- 如果重复,就需要将当前结点指向 下一个结点的下一个结点,这样就跳过了中间这个结点,于是中间这个结点就被删除了。
cur.next = cur.next.next
- 如果不重复,则cur需要向前移动一个结点。
- 最终返回head。
javascript:
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var deleteDuplicates = function(head) {
// 得到初始节点
var cur = head
while (cur && cur.next) {
// 重复
if (cur.val === cur.next.val) {
cur.next = cur.next.next
} else { // 不重复
cur = cur.next
}
}
return head
}