CodeSprout程式萌芽
中等第 132 題 · 樣本篩選報表
CodeSprout 官方2026/10/04 00:19
官方解答 · 置頂Python

官方解答|樣本篩選報表

官方解答

Python #132:樣本篩選報表

解題規則

實驗站會挑選部分樣本並換算,同時保留這些樣本原讀值的合計。

只保留 values 中所有數值;每個保留項改成數值與索引的距離。回傳 [轉換後清單, 所有保留項「轉換前」數值總和]。保留原順序,索引一律指原清單索引。

處理步驟

先以原索引判斷是否保留;符合者才轉換並加入 result,同時把轉換前的原值加入 total。

為何正確

每次迴圈處理原清單中一個位置;加入結果的項目正好是已讀位置中符合條件者。巢狀迴圈按外層索引、內層索引遞增,因此順序與重複位置都保留。

邊界與注意事項

本題輸入範圍:清單長度 0~12;每個值為 -100~100 的整數。 除題目指定的篩選或移除外,保留原資料的重複項與順序;使用切片或明確判斷安全處理允許的空資料。

範例追蹤

依參數順序 values 傳入 [[3,-2,0,5,-2]]。關鍵中間資料為 result = [3, 3, 2, 2, 6];total = 4;index = 4。最後回傳 [[3, 3, 2, 2, 6], 4]。結果由 return 回傳,不使用 print。

複雜度

設輸入總長度 n;游標或迴圈逐次前進,最壞時間 O(n),保存歷史與回傳結果最壞需要 O(n) 空間。

CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式

def solve(values):
    result = []
    total = 0
    for index in range(len(values)):
        if True:
            result.append(abs(values[index] - index))
            total += values[index]
    return [result, total]

留言討論 0