給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。
說明:
你需要自行定義鍊錶結構,將輸入的資料儲存到你的鍊錶中;
你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換;
你的演算法只能使用常數的額外空間。
輸入描述:
第一行輸入是鍊錶的值
第二行輸入是k的值,k是大於或等於1的整數
輸入形式為:
1 2 3 4 5
2輸出描述:
當 k = 2 時,應當輸出:
2 1 4 3 5
當 k = 3 時,應當輸出:
3 2 1 4 5
當k=6時,應當輸出:
1 2 3 4 5
示例1輸入
1 2 3 4 5
2輸出
2 1 4 3 5
class listnode:
def __init__
(self,x)
: self.val = x
self.next = none
class main:
def const
(self,arr)
: curr = ans =
listnode(-
1)for x in arr:
curr.next =
listnode
(x) curr = curr.next
return ans.next
def reverse
(self,listnode,n)
: ans = curr =
listnode(-
1)while listnode:
t = n
arr =
while t >=
1 and listnode:
arr.
(listnode.val)
t -=1
listnode = listnode.next
if t ==0:
curr.next = self.
const
(reversed
(arr)
)else
: curr.next = self.
const
(arr)#如果最後一組不夠n個,不需要反轉
tt = n #指標後移n位
while tt >=1:
curr = curr.next
tt -=1
ans = ans.next
while ans:
print
(ans.val,end=
' ')
ans = ans.next
if __name__ ==
'__main__'
: arr =
input()
n =input()
ln =
main()
.const
(arr.
split
(' '))
main()
.reverse
(ln,
int(n)
)
python讀取控制台輸入:arr = input()獲取一行
python不換行輸出:print(***,end=』 ')
其他的看**注釋
程式設計題 每K個一組反轉鍊錶
反轉鍊錶的高階版。給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。public static listnode reverselist listnode head,int k ...
小紅書 每K個一組反轉鍊錶(Python語言實現)
給出乙個鍊錶,每k個節點一組進行翻轉,並返回翻轉後的鍊錶。k是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是k的整數倍,那麼將最後剩餘節點保持原有順序。說明 1.你需要自行定義鍊錶結構,將輸入的資料儲存到你的鍊錶中 2.你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換 3.你的...
K個一組反轉鍊錶
描述 給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。示例 給你這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 ...