理論部分
理解線性表的定義與操作。
實現順序表。
實現單鏈表、迴圈鍊錶、雙向鍊錶。
練習部分
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步 將輸入原圖影象座標轉換為笛卡爾座標系 進行旋轉計算 將旋轉後的影象的笛卡爾座標轉回影象座標 影象座標系與笛...