題目
題目可參考上一篇文章,刪除鏈表中的指定值
思路
方法二:不用任何容器,直接調整。時間複雜度O(N),空間複雜度O(1)
- 因爲最後計劃返回鏈表頭,所以先遍歷鏈表按順序找到第一個不等於num的節點作爲head
- 當遇到等於num的節點就刪除,通過pre.next=cur.next;
源碼
public class Node{
public int value;
public Node next;
public Node(int data){
this.value=data;
}
}
public Node removeValue2(Node head,int num){
while(head!=null){
if(head.value!=num){
break;
}
head=head.next;
}
Node pre=head;
Node cur=head;
while(cur!=null){
if(cur.value==num){
pre.next=cur.next;
}else{
pre=cur;
}
cur=cur.next;
}
return head;
}