關於力扣上鏈表題目的一個重要細節

最近幾天在力扣上刷關於鏈表的題目,發現了一個問題,就是出現了執行代碼的時候正常,但是在提交代碼的時候就出現「解答錯誤」,並且代碼在本地測試也是正常無誤的,最終,找出了問題的所在,就是鏈表頭節點導致的,一般來說,單鏈表會設置一個頭節點,這個頭節點不存放任何具體的數值,用來指向鏈表的第一個節點,所以在解題的時候我都會先用if (head.next == null) 這段代碼來判斷鏈表是否爲空,因爲head.next指的是鏈表的第一個存放數值的節點,也就是真正意義上的第一個節點,而我在leetcode上提交的代碼如果加上這行判斷語句就會出現問題,原因其實就是題目中傳給我們的參數ListNode head 應該是真正意義上的鏈表第一個節點,而不是沒有存放具體數值的頭節點,所以要判斷鏈表是否爲空應該用if (head== null);可以看看以下的例子:

這是鏈表的一道經典題目:找出單向鏈表中倒數第 k 個節點,返回該節點的值;這用到了快慢指針的方法,原先我的代碼是這樣的:
在這裏插入圖片描述
代碼執行正常,與預期結果一致,但是在提交代碼的時候就出現問題了
在這裏插入圖片描述
而我把if (head.next == null) 改成了if (head == null) 就通過了✌️👋😎

總結: 單鏈表還是會有一個指向第一個節點的頭節點的,只是我們在力扣上刷關於鏈表的題目就注意把傳入的參數看成真正意義上的第一個節點來對待即可,另外,注意題目的一些要求和前提條件,如果題目已經說了給的是一個非空鏈表,那也就沒必要再判斷if (head== null) 了!