每天一道演算法題系列二十三之反轉鍊錶

2021-10-12 14:02:28 字數 1134 閱讀 7729

定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。

示例:輸入: 1->2->3->4->5->null

輸出: 5->4->3->2->1->null

/**

* definition for singly-linked list.

* public class listnode

* }*//*

這是雙指標的模式

每次讓 pre 的 nextnext 指向 curcur ,實現一次區域性反轉

區域性反轉完成之後, prepre 和 curcur 同時往前移動乙個位置

迴圈上述過程,直至 prepre 到達鍊錶尾部

*/class

solution

return cur;

}}

附上大神的遞迴的解法

class

solution

private listnode recur

(listnode cur, listnode pre)

}

遞迴演算法

public node reverselist

(node head)

//這裡的cur就是最後乙個節點

node cur =

reverselist

(head.next)

;//這裡請配合動畫演示理解

//如果鍊錶是 1->2->3->4->5,那麼此時的cur就是5

//而head是4,head的下乙個是5,下下乙個是空

//所以head.next.next 就是5->4

head.next.next = head;

//防止鍊錶迴圈,需要將head.next設定為空

head.next = null;

//每層遞迴函式都返回cur,也就是最後乙個節點

)謝謝大家。

每天一道演算法題(二十六)

給你 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。說明 你不能傾斜容器,且 n 的值至少為 2。示例 輸入 1,8,6,2,5,...

每天一道演算法題

no.1 棧是特殊的線性表,它。a.對 b.錯答案 錯,它的插入和刪除都是在同一端進行的。no.2 n個葉子節點的滿二叉樹 除了葉子節點,每個節點都有兩個孩子 總共有多少個節點?a.2n 1 b.2n c.n 1 d.n答案 a 滿二叉樹我們講過了,度為0的節點比度為2的加點多乙個。滿二叉樹是特殊的...

每天一道演算法題

1.給定乙個只包括 的字串,判斷字串是否匹配。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。思路 正確思路 不需要考慮輸入內容是否合法,這只是做題,不是工程 定義乙個字典,後括號為鍵,前半部分為值 定義乙個元素儲存棧頂,注意這個設定,取棧...