官方解答 · 置頂Java
官方解答|啟用感測值總和
官方解答|啟用感測值總和
解題思路
子類以 super(x) 初始化 protected final raw。value 回傳 Math.abs(raw),enabled 依原值判斷「偶數」。每個元素建立獨立 Reading,最後回傳 enabled=true 物件的 value() 總和,空輸入為0。
正確性與邊界
enabled 始終檢查原值,沒有用轉換後的值判斷。基底參考呼叫子類覆寫的方法;空輸入自然得到空清單或 0。
複雜度
時間 O(n),回傳清單時空間 O(n),只做累積時額外空間 O(1)。
公開範例
輸入 {"nums": [1]},依上述步驟得到 0。
下方程式可直接取代起始碼;使用 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 Math.abs(raw); }
boolean enabled() { return raw % 2 == 0; }
}
public static int solve(int[] nums) {
List<Integer> result = new ArrayList<>();
int answer = 0;
for (int x : nums) {
ReadingBase reading = new Reading(x);
if (reading.enabled()) answer += reading.value();
}
return answer;
}
}
留言討論 0
登入 後就能留言,一起討論不同的寫法。