官方解答 · 置頂Python
官方解答|樣本篩選報表
官方解答
Python #143:樣本篩選報表
解題規則
實驗站會挑選部分樣本並換算,同時保留這些樣本原讀值的合計。
只保留 values 中大於0的值;每個保留項改成[原值, 原索引]。回傳 [轉換後清單, 所有保留項「轉換前」數值總和]。保留原順序,索引一律指原清單索引。
處理步驟
先以原索引判斷是否保留;符合者才轉換並加入 result,同時把轉換前的原值加入 total。
為何正確
每次迴圈處理原清單中一個位置;加入結果的項目正好是已讀位置中符合條件者。巢狀迴圈按外層索引、內層索引遞增,因此順序與重複位置都保留。
邊界與注意事項
本題輸入範圍:清單長度 0~12;每個值為 -100~100 的整數。 除題目指定的篩選或移除外,保留原資料的重複項與順序;使用切片或明確判斷安全處理允許的空資料。
範例追蹤
依參數順序 values 傳入 [[3,-2,0,5,-2]]。關鍵中間資料為 result = [[3, 0], [5, 3]];total = 8;index = 4。最後回傳 [[[3, 0], [5, 3]], 8]。結果由 return 回傳,不使用 print。
複雜度
設輸入總長度 n;游標或迴圈逐次前進,最壞時間 O(n),保存歷史與回傳結果最壞需要 O(n) 空間。
CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式
def solve(values):
result = []
total = 0
for index in range(len(values)):
if values[index] > 0:
result.append([values[index], index])
total += values[index]
return [result, total]
留言討論 0
登入 後就能留言,一起討論不同的寫法。