刪除單鏈表中值等於***的所有元素
不經意間看到了乙個不同尋常的實現方法,覺得挺有意思,於是自己實現了一下,**真的是簡單明瞭跑得還賊快!
好,現在先在腦海中想想,你會怎麼實現?這麼簡單,5秒鐘後,你想到了解決方案,於是你決定驗證你的思路,請繼續往下看
定義鍊錶節點結構如下:
type listnode struct
1:最常見思路
定義乙個儲存上個節點的變數prev,當發現當前節點cur的值等於目標值,就將prev.next = cur.next,一直迴圈下去,跳過節點值等於目標值的所有節點,即刪除了所有值等***的節點,golang**實現如下:
func removenodenormal(head *listnode, value int) *listnodeelse
} else
}return
head
}
這麼簡單,我就不做任何說明了,後面會附上完整**和簡單的單測
你的思路是這樣的嗎?
if 是 ||!不是
2:第二常見思路
func removenodereplace(head *listnode, value int) *listnodecur.value =cur.next.value
cur.next =cur.next.next
}for cur !=nil
else
}return
head
}
3:linus喜歡的**
linus說**應該這樣寫,我就不做任何說明了,你品,你細品!!
func removenode(head *listnode, value int) *listnodeelse
}return
head
}
完整**如下,你可以跑著試一下:
package mainimport (
"fmt")
type listnode
struct
func removenodenormal(head *listnode, value int) *listnode
else
} else
}return
head
}func removenodereplace(head *listnode, value int) *listnode
cur.value =cur.next.value
cur.next =cur.next.next
}for cur !=nil
else
}return
head
}func removenode(head *listnode, value int) *listnode
else
}return
head
}func arraytolink(nums
int) *listnode
head := &listnode
tail :=head
for i := 1; i < len(nums); i++
tail =tail.next
}return
head
}func linktoarray(head *listnode) int
return
array
}func arrayequal(nums1, nums2
int) bool
for i := 0; i < len(nums1); i++
}return
true
}func main() ,
1,int{},},,
1,int{},},,
1,int,},,
2,int,},,
1,int,},,
2,int,},,
3,int,},,
4,int,},}
for _, test :=range tests
}
如果你對演算法感興趣,可以看看我刷的leetcode: (求讚)
如果你對演算法感興趣,可以看看我刷的leetcode: (求讚)
如果你對演算法感興趣,可以看看我刷的leetcode: (求讚)
刪除單鏈表,你會嗎?
刪除單鏈表中值等於 的所有元素 不經意間看到了乙個不同尋常的實現方法,覺得挺有意思,於是自己實現了一下,真的是簡單明瞭跑得還賊快!好,現在先在腦海中想想,你會怎麼實現?這麼簡單,5秒鐘後,你想到了解決方案,於是你決定驗證你的思路,請繼續往下看 定義鍊錶節點結構如下 type listnode str...
你會跑步嗎?
跑步應該是每個人與生俱來的本領,除了嬰兒和有腿疾的人,誰都可以邁開腿跑起來。跑步也是最容易開展起來的運動,只要有一雙跑鞋,不拘泥於場地,就可以進行,甚至有些 赤腳大仙 光著腳丫就可以跑起來。然而,你會跑步嗎?不知道你有沒有聽過一句話 跑步百利唯傷膝。在我的周圍,也有不少的人對我說,不要跑步,跑多了,...
你會休息嗎
為什麼你睡了11個小時仍然覺得疲累?為什麼你花了好幾萬去島國度假並沒有增加生活的熱情?都說要去ktv,去夜店,去遊樂園就能忘掉不快,更帶勁地開始新的一天,但是盡興歸來心裡只剩空虛?我們真的明白休息的含義嗎?我們休息對了嗎?你理解的休息是什麼?乙個飽覺?一陣瘋玩?到ktv釋放飯後的一串飽嗝?休息的真正...