CodeSprout程式萌芽
中等第 216 題 · 感測模組啟用清單
CodeSprout 官方2026/10/04 00:19
官方解答 · 置頂Java

官方解答|感測模組啟用清單

官方解答|感測模組啟用清單

解題思路

子類以 super(x) 初始化 protected final raw。value 回傳 raw,enabled 依原值判斷「正數」。每個元素建立獨立 Reading,最後依原順序對每個物件回傳 enabled()?1:0,空輸入為[]。

正確性與邊界

enabled 始終檢查原值,沒有用轉換後的值判斷。基底參考呼叫子類覆寫的方法;空輸入自然得到空清單或 0。

複雜度

時間 O(n),回傳清單時空間 O(n),只做累積時額外空間 O(1)。

公開範例

輸入 {"nums": [1]},依上述步驟得到 [1]。

下方程式可直接取代起始碼;使用 Java 11,入口為 Solution.solve。

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

import java.util.*;

public class Solution {
    private static abstract class ReadingBase {
        protected final int raw;
        ReadingBase(int raw) { this.raw = raw; }
        abstract int value();
        abstract boolean enabled();
    }
    private static class Reading extends ReadingBase {
        Reading(int x) { super(x); }
        int value() { return raw; }
        boolean enabled() { return raw > 0; }
    }

    public static List<Integer> solve(int[] nums) {
        List<Integer> result = new ArrayList<>();
        int answer = 0;
        for (int x : nums) {
            ReadingBase reading = new Reading(x);
            result.add(reading.enabled() ? 1 : 0);
        }
        return result;
    }
}

留言討論 0