劍指Offer每日一題08

2021-10-05 01:30:47 字數 770 閱讀 9120

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

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

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

限制:0 <= 節點個數 <= 5000

方法一:日常雙指標,好用不要錢

public

class

listnode

}public listnode reverselist

(listnode head)

return pre;

}

方法二:遞迴

有思路做不出,搜得:

public listnode reverselist

(listnode head)

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

listnode 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,也就是最後乙個節點

return cur;

}

學習了,遞迴下次最好還是多畫畫圖

劍指Offer每日一題09

輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是遞增排序的。示例 輸入 1 2 5 null 2 4 7 null 輸出 1 2 2 4 5 7 null限制 0 鍊錶長度 1000 方法一 正常哨兵結點求解 class solution else prev prev.next 迴圈結...

劍指Offer第一題

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路 從數值中間開始查詢,根據題意,二維陣列的左上角是最小值,二維陣列的右下角是最大值,從中間數值查詢是最節約時間的,可以從左下角或者...

劍指offer 第一題

這題思路不難,但是關於二維陣列的邊界問題,差點把我整崩潰 題目描述 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。這題的思路就是找乙個中間值,讓他在陣列查詢...