官方解答 · 置頂Java
官方解答|巡檢相異值數
官方解答|巡檢相異值數
解題思路
由左至右判斷「正數」。符合時加入保留清單;不符合時執行:尚未找到符合值前略過;第一段開始後,遇到不符合值便結束。 最後只對保留清單計算相異值數。
正確性與邊界
continue、break、第一段和最後一段的差異在不符合分支中明確處理。空清單統計為 0;交錯加減依保留後的順序重新編號。
複雜度
時間 O(n),額外空間 O(n)。
公開範例
輸入 {"nums": [1]},依上述步驟得到 1。
下方程式可直接取代起始碼;使用 Java 11,入口為 Solution.solve。
CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式
import java.util.*;
public class Solution {
private static int aggregate(List<Integer> values) {
return new HashSet<Integer>(values).size();
}
public static int solve(int[] nums) {
List<Integer> values = new ArrayList<>();
for (int x : nums) {
if (!(x > 0)) {
if (!values.isEmpty()) break;
continue;
}
values.add(x);
}
return aggregate(values);
}
}
留言討論 0
登入 後就能留言,一起討論不同的寫法。