题目 203. 移除链表元素
删除链表中等于给定值 val 的所有节点。
题解
删除结点:要注意虚拟头节点。
代码
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode pre= new ListNode(-1);
pre.next=head;
ListNode cur = pre;
while(cur.next!=null){
if(cur.next.val==val){//每次判断的是cur.next
cur.next=cur.next.next;
}else{//注意是else
cur=cur.next;
}
}
return pre.next;
}
}
题目 876. 链表的中间结点
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
题解
注意while中的条件,使得快指针是有效的。
代码
class Solution {
public ListNode middleNode(ListNode head) {
ListNode quick = head, slow= head;
while(quick!=null&&quick.next!=null){
quick=quick.next.next;
slow=slow.next;
}
return slow;
}
}