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

官方解答|樣本篩選報表

官方解答

Python #136:樣本篩選報表

解題規則

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

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

處理步驟

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

為何正確

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

邊界與注意事項

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

範例追蹤

依參數順序 values 傳入 [[3,-2,0,5,-2]]。關鍵中間資料為 result = [9, 25];total = 8;index = 4。最後回傳 [[9, 25], 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] * values[index])
            total += values[index]
    return [result, total]

留言討論 0