删除有序链表中重复的节点
解法一:只用一个节点遍历,遇到下一个相同,就将cur.next = cur.next.next; 否则正常遍历
fun(head){
if(head == null) return null;
Node cur = head;//遍历的指针
while(cur != null && cur.next != null){
if(cur.val = cur.next.val){
cur.next = cur.next.next;
}else {cur = cur.next;}
}
}
解法二:使用两个节点,前一个节点pre ,后一个节点cur, cur与pre的值不同就把cur节点向后移动,不同就把pre.next = cur; pre = cur;此时有个问题是最后一个节点会不进行比较
fun(head){
if(head == null) return null;
Node cur = head;//遍历的指针
Node pre = head;
while(cur != null && cur.next != null){
if(pre.val == cur.val){
cur = cur.next;
}else{
pre.next = cur;
pre = cur;
}
}
if(pre.val == cur.val){
pre.next = null;
}else{pre.next = cur;}
return head;
}
浙公网安备 33010602011771号