官方解答 · 置頂Java
官方解答|感測模組啟用清單
官方解答|感測模組啟用清單
解題思路
子類以 super(x) 初始化 protected final raw。value 回傳 raw,enabled 依原值判斷「介於負二與三」。每個元素建立獨立 Reading,最後依原順序對每個物件回傳 enabled()?1:0,空輸入為[]。
正確性與邊界
enabled 始終檢查原值,沒有用轉換後的值判斷。基底參考呼叫子類覆寫的方法;空輸入自然得到空清單或 0。
「介於負二與三」包含兩個端點,即 -2 <= x && x <= 3;x 指當前原始數值。
複雜度
時間 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 >= -2 && raw <= 3; }
}
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
登入 後就能留言,一起討論不同的寫法。