电脑网络不行啊。。。。
题目这么垃圾就不用解释了把。
因为有序,所以相邻.
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var deleteDuplicates = function(head) {
let p=head;
while(p&&p.next)
{
if(p.val===p.next.val)
{
p.next=p.next.next;
}
else{
p=p.next;
}
}
return head;
};
开始遍历链表的开始。
let p=head;
当前节点的值等于下一个的值就删除下一个节点的元素.
if(p.val===p.next.val)
{
p.next=p.next.next;
}
问题?
如果next没有值的话,会报错的。
因为要相等啊,比较啊,有值才能比较是吧。
那为什么p.next=p.next.next;
如果p.next.next;
没有值为什么不会报错?因为他不是比较。比较必须是值与值比较的啊。
所以
while(p&&p.next)
然后让p遍历下去。
问题?
如果有三个值都相同怎么办?
在循环一次,然后是p再跟p.next的元素对比,比较。。为什么还是p.next;
因为他被p.next.next;
覆盖了呀。所以p.next
是原本的第三个元素了啊.
最后是:
遍历完后就返回链表的头部了呀,代表结束了啊.