day2 Datawhale 資料結構與演算法

2021-10-02 00:27:22 字數 3761 閱讀 8227

理論部分

理解線性表的定義與操作。

實現順序表。

實現單鏈表、迴圈鍊錶、雙向鍊錶。

練習部分

1. 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。

示例:

輸入:1

->2-

>4,

1->3-

>

4輸出:1

->1-

>2-

>3-

>4-

>

4

**:

class

solution

:def

mergetwolists

(self, l1: listnode, l2: listnode)

-> listnode:

res = listnode(0)

prev = res #prev和res同時指向乙個鍊錶,prev移動進行鍊錶操作。

while l1 is

notnone

and l2 is

notnone

:if l1.val <= l2.val:

prev.

next

= l1

l1 = l1.

next

else

: prev.

next

= l2

l2 = l2.

next

prev = prev.

next

prev.

next

= l1 if l1 is

notnone

else l2

return res.

next

# res一直指向結果鍊錶的首結點,所以prev完成移動後,結果鍊錶即形成

結果:

2. 刪除鍊錶的倒數第n個節點

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。

示例:

給定乙個鍊錶:1-

>2-

>3-

>4-

>

5, 和 n =2.

當刪除了倒數第二個節點後,鍊錶變為 1

->2-

>3-

>

5.

說明:

給定的 n 保證是有效的。

高階:你能嘗試使用一趟掃瞄實現嗎?

**:

class

solution

:def

mergetwolists

(self, l1: listnode, l2: listnode)

-> listnode:

res = listnode(0)

prev = res #prev和res同時指向乙個鍊錶,prev移動進行鍊錶操作。

while l1 is

notnone

and l2 is

notnone

:if l1.val <= l2.val:

prev.

next

= l1

l1 = l1.

next

else

: prev.

next

= l2

l2 = l2.

next

prev = prev.

next

prev.

next

= l1 if l1 is

notnone

else l2

return res.

next

# res一直指向結果鍊錶的首結點,所以prev完成移動後,結果鍊錶即形成

結果:

3. 旋轉鍊錶

給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動k個位置,其中k是非負數。

示例 1:

輸入:1-

>2-

>3-

>4-

>5-

>null, k =

2輸出:4-

>5-

>1-

>2-

>3-

>null

解釋:向右旋轉 1 步:5-

>1-

>2-

>3-

>4-

>null

向右旋轉 2 步:4-

>5-

>1-

>2-

>3-

>null

示例 2:

輸入:0-

>1-

>2-

>null, k =

4輸出:2-

>0-

>1-

>null

解釋:向右旋轉 1 步:2-

>0-

>1-

>null

向右旋轉 2 步:1-

>2-

>0-

>null

向右旋轉 3 步:0-

>1-

>2-

>null

向右旋轉 4 步:2-

>0-

>1-

>null

**:

class

solution

:def

rotateright

(self, head: listnode, k:

int)

-> listnode:

len=

0 res,l1,l2 = head,head,head

while l1 is

notnone

:#獲取鍊錶長度

l1 = l1.

next

len+=

1if k >

len:

#實現迴圈移動

k= k%

lenfor i in

range(1

,len

-k):

l2 = l2.

next

res = l2.

next

l2.next

=none

res1 = res

for j in

range

(k-1):

res1 = res1.

next

res1.

next

= head

return res

結果:

DataWhale 資料探勘 Task2

import warnings import matplotlib.pyplot as plt import pandas as pd import pandas profiling import scipy.stats as st import seaborn as sns warnings.fi...

Datawhale 程式設計打卡 2

氣泡排序 def maopao paixu a l len a for i in range l 1 遍歷的是排好序的個數 for j in range l i 1 遍歷的是待排序的個數 if a j a j 1 temp a j a j a j 1 a j 1 temp print a retur...

Datawhale 2 幾何變換

基於opencv的實現 變換的形式 公式 是什麼?旋轉中心是什麼?採取前向對映還是方向對映?採取方向對映後,採用何種插值演算法?仿射變換 平移 旋轉 放縮 剪下 反射 對於旋轉和偏移,需要3步 將輸入原圖影象座標轉換為笛卡爾座標系 進行旋轉計算 將旋轉後的影象的笛卡爾座標轉回影象座標 影象座標系與笛...