演算法題 Reverse Linked List

2022-08-17 17:33:12 字數 799 閱讀 9380

reverse a singly linked list.

這個屬於經典問題,鍊錶反轉的思路基本上已經非常固定了。有兩種非常常見的方法:1.三指標法 2.頭插法

這個題目用到的是三指標法。

方法:設立三個指標,分別叫做pre, curr, next。這三個指標的功能分別是:現用next儲存curr的下乙個結點,免得以後找不到了。然後將curr指向pre,這一步實現了反轉,然後讓pre指向curr, curr指向next。

具體的解釋這個部落格寫的非常明晰(也包括了頭插法):

初始化的時候,pre=none,curr=pre.next , next=curr.next

#

definition for singly-linked list.

#class listnode(object):

#def __init__(self, x):

#self.val = x

#self.next = none

class

solution(object):

defreverselist(self, head):

""":type head: listnode

:rtype: listnode

"""pre=none

next=none

curr=head

while

curr:

next=curr.next

curr.next=pre

pre=curr

curr=next

return pre

演算法 常見演算法題

演算法題 假如有100個不相同的數,比如從1到100,怎樣使用10次取出其中的10個不同的數字,要求每個數取出的概率一樣 一開始沒有說10次,所以我說,使用乙個random函式,以時間為種子來取,當取出乙個時,做標記,下次再取到這個數時,重新取一次 然後他就說了如果只能夠取10次怎麼辦?一開始我想到...

基礎演算法題

1.一百萬富翁遇到一陌生人,陌生人找他談乙個換錢的計畫,計畫如下 我每天給你十萬,而你每天只需要給我一分錢,第二天我仍然給你十萬元,你給我二分錢,第三天我仍然給你十萬,你給我四分錢.你每天給我的錢是前天的兩倍,直到乙個月 30天 百萬富翁很高興,欣然接受拉這個契約.請編寫乙個程式計算這乙個月中陌生人...

演算法題筆記

1 請給出乙個o nlogn 的演算法,使之能夠找出乙個n個數的序列中最長的單調遞增子串行。這是演算法導論中的一道課後題。解法一 利用求最長公共子串行的思想,將n個數的序列a先排序形成乙個有序的序列b,然後利用動態規劃的思想求a與b的最長公共子串行,得到的最長公共子串行就是所求的解。但是我們知道最長...