题目
题目可参考上一篇文章,删除链表中的指定值
思路
方法二:不用任何容器,直接调整。时间复杂度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;
}