官方解答 · 置頂Java
官方解答|分類讀值總和
官方解答|分類讀值總和
解題思路
先按「全部」篩選原值,再用 Math.floorMod(x, 3) 算鍵,將 x 加入該鍵清單。TreeMap 依鍵遞增走訪,每群計算總和後攤平成鍵、統計值。
正確性與邊界
分組鍵用原值,統計用轉換值。floorMod 保證負數落在非負餘數群;群內順序與重複保留,不補沒有出現的鍵。交錯加減每群從正號開始。
複雜度
設 n 為輸入長度、g 為群數。時間 O(n log g),額外空間 O(n)。
公開範例
輸入 {"nums": [1]},依上述步驟得到 [1, 1]。
下方程式可直接取代起始碼;使用 Java 11,入口為 Solution.solve。
CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式
import java.util.*;
public class Solution {
private static int aggregate(List<Integer> values) {
int answer = 0;
for (int x : values) answer += x;
return answer;
}
public static List<Integer> solve(int[] nums) {
Map<Integer,List<Integer>> groups = new TreeMap<>();
for (int x : nums) {
if (true) {
int key = Math.floorMod(x,3);
groups.computeIfAbsent(key, ignored -> new ArrayList<>()).add(x);
}
}
List<Integer> result = new ArrayList<>();
for (Map.Entry<Integer,List<Integer>> entry : groups.entrySet()) {
result.add(entry.getKey()); result.add(aggregate(entry.getValue()));
}
return result;
}
}
留言討論 0
登入 後就能留言,一起討論不同的寫法。