微軟俱樂部程式設計題第二週第三題 刪除鍊錶中重複的結點

2021-09-02 17:40:09 字數 1222 閱讀 9459

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5

刪除重複結點,只需要記錄當前結點前的最晚訪問過的不重複結點ppre、當前結點pcur、指向當前結點後面的結點pnext的三個指標即可。如果當前節點和它後面的幾個結點數值相同,那麼這些結點都要被剔除,然後更新ppre和pcur;如果不相同,則直接更新ppre和pcur。

需要考慮的是,如果第乙個結點是重複結點,那麼就把頭指標phead也更新一下。

# -*- coding:utf-8 -*-

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:def

deleteduplication

(self, phead)

:# write code here

ppre =

none

pcur = phead

pnext =

none

while pcur !=

none

:if pcur.

next

!=none

and pcur.val == pcur.

next

.val:

pnext = pcur.

next

while pnext.

next

!=none

and pnext.

next

.val == pcur.val:

pnext = pnext.

next

if pcur == phead:

phead = pnext.

next

else

: ppre.

next

= pnext.

next

pcur = pnext.

next

else

: ppre = pcur

pcur = pcur.

next

return phead

微軟俱樂部程式設計題第二週第二題 將矩陣中的元素置零

給定乙個mxn矩陣,如果矩陣中有元素0,則將其所在的行和列都置為0。請使用原地演算法。原題鏈結 例如 輸入 1,1,1 1,0,1 1,1,1 輸出 1,0,1 0,0,0 1,0,1 設定兩個長度分別為m和n的標記陣列分別記錄行和列是否有0,根據標記陣列將某些矩陣元素置0。class soluti...

微軟俱樂部程式設計題第一周第二題 矩形覆蓋

我們可以用2x1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2x1的小矩形無重疊地覆蓋乙個2xn的大矩形,總共有多少種方法?我們先把2xn的覆蓋方法記為f n 用第乙個1x2小矩陣覆蓋大矩形的最左邊時有兩個選擇,豎著放或者橫著放。當豎著放的時候,右邊還剩下2x n 1 的區域,這種情況下的覆蓋方...

第二期訓練題 第三題

time limit 1000 ms memory limit 32768 kb 乙個整數,只知道前幾位,不知道末二位,被另乙個整數除盡了,那麼該數的末二位該是什麼呢?輸入資料有若干組,每組資料報含二個整數a,b 0對應每組資料,將滿足條件的所有尾數在一行內輸出,格式見樣本輸出。同組資料的輸出,其每...