官方解答 · 置頂Java
官方解答|分段觀測摘要
官方解答|分段觀測摘要
解題思路
先依規則建立群組:依序取出長度 5、6、…直到 nums 全長的前綴;不足 5 個元素時沒有前綴。 對每組只保留非零,再計算交錯加減,依群組建立順序輸出。
正確性與邊界
每組重新建立 values,統計與交錯符號不會跨組延續。空群組為 0;視窗只保留完整長度,不重疊分組則保留最後不足長度的一組。
複雜度
設 n 為陣列長度。前綴總掃描量為 O(n²),固定寬度視窗為 O(nw),不重疊分組為 O(n);額外空間 O(n)。
公開範例
輸入 {"nums": [1]},依上述步驟得到 []。
下方程式可直接取代起始碼;使用 Java 11,入口為 Solution.solve。
CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式
import java.util.*;
public class Solution {
private static int aggregate(List<Integer> values) {
int answer = 0;
for (int i = 0; i < values.size(); i++)
answer += (i % 2 == 0 ? values.get(i) : -values.get(i));
return answer;
}
public static List<Integer> solve(int[] nums) {
List<Integer> result = new ArrayList<>();
for (int end = 5; end <= nums.length; end++) {
List<Integer> values = new ArrayList<>();
for (int i = 0; i < end; i++) {
int x = nums[i];
if (x != 0) values.add(x);
}
result.add(aggregate(values));
}
return result;
}
}
留言討論 0
登入 後就能留言,一起討論不同的寫法。