每日一題 反轉鍊錶

2021-08-28 16:30:57 字數 832 閱讀 1649

這道是牛客的題,給了鍊錶然後返回鍊錶的新表頭。

拿到這道題首先肯定想到的是暴力求解,從表頭開始遍歷到尾,用尾元素作為新錶的表頭,然後遍歷尾元素的上乙個元素,鏈到新錶的最後然後不斷重複直到鍊錶的表頭鏈到新錶的尾巴

這樣有乙個很大的問題就是複雜度太高了,時間複雜度是o(n*n)這個時候我想到了肯定有簡單的辦法,利用多指標操控,而且由於次次要斷掉其中的鍊子所以肯定要存起來後面的元素,所以我們用三個指標進行操控

首先要是這個鍊錶為空或只有乙個元素直接返回,要是只有兩個元素就讓next指向表頭,表頭指空,然後滿足我們使用三個指標的條件了

這樣就解決了複雜度的問題,可是三個指標控制難度還是蠻大的,**讀起來太費勁了,我就想著怎麼優化,最後想到了只用兩個指標就可以操控的辦法

第一步一樣,鍊錶為空或者只有乙個表頭就返回表頭

這裡給出第三種方法的實現

/*

struct listnode

};*/

class solution

listnode* ptr = null;;

listnode* next;

while(phead)

return ptr;}};

LeetCode 每日一題92 反轉鍊錶 II

給你單鏈表的頭節點head和兩個整數left和right,其中left right。請你反轉從位置left到位置right的鍊錶節點,返回 反轉後的鍊錶 示例 1 輸入 head 1 2,3 4,5 left 2,right 4輸出 1,4,3,2,5 示例 2 輸入 head 5 left 1,r...

LeetCode每日一題 回文鍊錶

題目 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 思路 判斷是否是回文,可以將鍊錶儲存在乙個陣列中,然後用兩個指標乙個指向頭,乙個指向尾,同時向中間掃瞄。演算法 複製鍊錶值到陣列列表中。使用雙指標法判斷是否為回文。cl...

每日一題 環形鍊錶(簡單)

給定乙個鍊錶,判斷鍊錶中是否有環。如果鍊錶中有某個節點,可以通過連續跟蹤 next 指標再次到達,則鍊錶中存在環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。注意 pos 不作為引數進行傳遞,僅僅是為了標識...