1025 反轉連結串列 Python實現
1025 反轉連結串列 (25)(25 分)
給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為1→2→3→4→5→6,K為3,則輸出應該為3→2→1→6→5→4;如果K為4,則輸出應該為4→3→2→1→5→6,即最後不到K個元素不反轉。
輸入格式:
每個輸入包含1個測試用例。每個測試用例第1行給出第1個結點的地址、結點總個數正整數N(<= 10^5^)、以及正整數K(<=N),即要求反轉的子鏈結點的個數。結點的地址是5位非負整數,NULL地址用-1表示。
接下來有N行,每行格式為:
Address Data Next
其中Address是結點地址,Data
輸出格式:
對每個測試用例,順序輸出反轉後的連結串列,其上每個結點佔一行,格式與輸入相同。
輸入樣例:
00100 6 4
00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218
輸出樣例:
00000 4 33218
33218 3 12309
12309 2 00100
00100 1 99999
99999 5 68237
68237 6 -1
問題分析:
該題是一道連結串列操作問題,可以建立類表示結點。我直接使用列表裝資料,列表元素的排列順序表示鏈結構。注意最 後一個元素的next(下個結點地址)為-1。測試結果倒數第二項超時,這已經不是第一次遇見超時了。這道題的從方法到程式結構都有很大改進空間,但是本博主十分懶惰(不想改了),所以有什麼高明的改進,可以在評論中解答一下。
程式(有超時):
a = input().split() b = [] for i in range(int(a[1])): b.append(input().split()) x = [] for i in b: if i[0]==a[0]: x.append(i) while x[-1][2]!='-1': for i in b: if i[0]==x[-1][2]: x.append(i) m = [] i = 0 while i<int(a[1]): m.append(x[i:i+int(a[2])]) i+=int(a[2]) for i in m: if len(i)<int(a[2]): break else: i.reverse() j = 0 while j<int(a[2])-1: i[j][2]=i[j+1][0] j+=1 for i in range(len(m)-1): m[i][-1][2]=m[i+1][0][0] if len(m[-1])==int(a[2]): m[-1][int(a[2])-1][2]='-1' for i in m: for j in i: print("%s %s %s"%(j[0],j[1],j[2]))
相關推薦
1025 反轉連結串列 Python實現
1025 反轉連結串列 (25)(25 分) 給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為1→2→3→4→5→6,K為3,則輸出應該為3→2→1→6→5→4;如果K為4,則輸出應該為4→3→2→1→5→6,即最後不到K個元素不反轉。 輸入
1025 反轉連結串列——c++實現
題目: 1025 反轉連結串列 (25 分) 給定一個常數 K 以及一個單鏈表 L,請編寫程式將 L 中每 K 個結點反轉。例如:給定 L 為 1→2→3→4→5→6,K 為 3,則輸出應該為 3→2→1→6→5→4;如果 K 為 4,則輸出應該為 4→3→2→1→5→6,即最
PAT Basic 1025. 反轉連結串列 (25)(C語言實現)
, CSDN內容暫時不更新(將來有計劃更新), 請前往連結檢視最新內容. 歡迎star 我的repo題目給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為
1025. 反轉連結串列 (25)-浙大PAT乙級真題java實現
個人部落格:開啟連結 1025. 反轉連結串列 (25) 給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為1→2→3→4→5→6,K為3,則輸出應該為3→2→1→6→5
(PAT乙級)1025 反轉連結串列(C語言實現)
總結: 1、首先要有hash雜湊思想,關鍵字是首地址,對應到的陣列內可以查詢到首地址對應的數值和下一地址。這樣可以構成一組資料的輸入。 2、還應該考慮輸入樣例中有不在連結串列中的結點的情況。所以用個sum計數統計在連結串列裡的有效節點。注意連結串列的最後為空,所以對應
PAT(Python)-1025:反轉連結串列(25)
給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為1→2→3→4→5→6,K為3,則輸出應該為3→2→1→6→5→4;如果K為4,則輸出應該為4→3→2→1→5→6,即最後不到K個元素不反轉。 輸入格式: 每個輸入包含1個測試用例。每個測
PAT乙級1025反轉連結串列
題目描述: 給定一個常數 K 以及一個單鏈表 L,請編寫程式將 L 中每 K 個結點反轉。例如:給定 L 為 1→2→3→4→5→6,K 為 3,則輸出應該為 3→2→1→6→5→4;如果 K 為 4,則輸出應該為 4→3→2→1→5→6,即最後不到 K 個元素不反轉。 輸入格式: 每個
1025 反轉連結串列 (25 分)
24'。最後一個測試點沒過,有大佬可以指出則磕頭跪謝。 #include <iostream> #include <cstdio> #include <vector> using namespace std; struct List{
PAT乙級 1025 反轉連結串列 (25 分)
給定一個常數 K 以及一個單鏈表 L,請編寫程式將 L 中每 K 個結點反轉。例如:給定 L 為 1→2→3→4→5→6,K 為 3,則輸出應該為 3→2→1→6→5→4;如果 K 為 4,則輸出應該為 4→3→2→1→5→6,即最後不到 K 個元素不反轉。 輸入格式: 每個輸入包含
PAT 1025 反轉連結串列
#include <bits/stdc++.h> #define TEST using namespace std; struct node { int adress; int data; int next; }; int main() { int la
PAT-乙-1025 1025 反轉連結串列 (25 分)
程式碼 #include <iostream> #include <vector> using namespace std; const int MAX = 100000; struct node { int id; int
leetcode21 合併兩個有序連結串列 python實現
題目比較簡單,寫個文章記錄一下 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->
PAT (Basic Level) Practice 1025 反轉連結串列
乙級1025 該題本身就是連結串列基礎演變而來的,連結串列基礎可以看翁愷老師的C語言程式設計基礎,上面講的很詳細了 資料的儲存結構就可以類似連結串列構造: struct list{ int address;//儲存當前地址,值,下一個地址的值 int value; int
PAT乙級—1025. 反轉連結串列 (25)-native
給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為1→2→3→4→5→6,K為3,則輸出應該為3→2→1→6→5→4;如果K為4,則輸出應該為4→3→2→1→5→6,即最後不到K個元素不反轉。 輸入格式: 每個輸入包含1個測試用例
leetcode 相交連結串列 python實現
1 class Solution(object): 2 def getIntersectionNode(self, headA, headB): 3 """ 4 :type head1, head1: ListNode 5 :rtype: Li
1025 反轉連結串列 (25 分
給定一個常數 K 以及一個單鏈表 L,請編寫程式將 L 中每 K 個結點反轉。例如:給定 L 為 1→2→3→4→5→6,K 為 3,則輸出應該為 3→2→1→6→5→4;如果 K 為 4,
PAT 乙級 1025 反轉連結串列
1025 反轉連結串列 (25 point(s)) 給定一個常數 K 以及一個單鏈表 L,請編寫程式將 L 中每 K 個結點反轉。例如:給定 L 為 1→2→3→4→5→6,K&nb
pat 乙級 1025. 反轉連結串列 (25)
目前未解決 9.5 號 目標9.10之前解決 注意考慮輸入樣例中有不在連結串列中的結點的情況。所以用個sum計數 algorithm標頭檔案裡面有reverse函式可以直接呼叫 #in
PAT 乙級 1025. 反轉連結串列
給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為1→2→3→4→5→6,K為3,則輸出應該為3→2→1→6→5→4;如果K為4,則輸出應該為4→3→2→1→5→6,即最後不到K個元素不反轉。 輸入格式:
1025 反轉連結串列(待寫)
給定一個常數 K 以及一個單鏈表 L,請編寫程式將 L 中每 K 個結點反轉。例如:給定 L 為 1→2→3→4→5→6,K 為 3,則輸出應該為 3→2→1→6→5→4;如果 K 為 4,則輸出應該為 4→3→2→1→5→6,即最後不到 K 個元素不反轉。 輸入格式: