
鏈表的題我們如果沒思路的話畫圖就完事了,鏈表中我們需要關注三個主要的位置,頭,尾,和中任意位置
下面我們來畫圖解釋一下,



我們可以使用雙指標來解決這個問題,cur代表當前節點(從head.next開始),prev代表當前節點的前驅(prev=head),(我們先不考慮第一個節點)我們讓cur一直往下走,每走一次判斷一下當前cur.val是否等于傳參傳入的value,如果相等的令prev.next=cur.next;(就相當于洗掉了這個值相等的節點),然后接著走(cur=cur.next),如果不想的的話需要先更新prev的值(prev=cur),再接著走(cur=cur.next),直到全部遍歷完結束,到這里我們還有頭結點沒有判斷,我們在判斷一下頭結點的val是否與傳入的val即可
具體代碼如下:
class Solution {
public ListNode removeElements(ListNode head, int val) {
if(head==null)
{
return null;
}
ListNode prev=head;
ListNode cur=head.next;
while(cur!=null)
{
if(cur.val==val)
{
prev.next=cur.next;
cur=cur.next;
}else{
prev=cur;
cur=cur.next;
}
}
if(head.val==val)
{
head=head.next;
}
return head;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/243599.html
標籤:其他
