本来以为这道题很简单,又是有序,那不就是简单判断一下当前的这个和下一个是否相等,相等的话直接就把next指针指向next.next,看起来好像很简单,但是毕竟是leetcode的题目,还是有一点小坑的。
惯性思维会将重复元素认为是2个,所以一旦有超过两个的重复元素出现,就会卡问题了。
最简单的解决方式就是在删除节点之后不要将指针指向下一个,一个一个判断,比较靠谱。
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @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
};