CodeSprout程式萌芽
中等第 413 題 · 觀測集合排序清單
CodeSprout 官方2026/10/04 00:19
官方解答 · 置頂Java

官方解答|觀測集合排序清單

官方解答|觀測集合排序清單

解題思路

先將 left、right 分別放入 Set 去重,再做聯集。只保留非負數,將原值轉為 x,依數值遞減排序。

正確性與邊界

每個原集合值只參與一次,負奇數用 % 2 != 0 判斷。空結果回傳 []。轉換後不再次去重,轉成相同值的不同原值仍保留多份;絕對值同分以數值遞增決定順序。

複雜度

平均集合處理時間 O(n+m),結果排序 O(k log k),額外空間 O(n+m)。

公開範例

輸入 {"left": [1], "right": []},依上述步驟得到 [1]。

下方程式可直接取代起始碼;使用 Java 11,入口為 Solution.solve。

CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式

import java.util.*;

public class Solution {

    public static List<Integer> solve(int[] left, int[] right) {
        Set<Integer> values = new HashSet<>(), rightSet = new HashSet<>();
        for (int x : left) values.add(x);
        for (int x : right) rightSet.add(x);
        values.addAll(rightSet);
        List<Integer> result = new ArrayList<>();
        for (int x : values) if (x >= 0) result.add(x);
        result.sort(Collections.reverseOrder());
        return result;
    }
}

留言討論 0