CodeSprout程式萌芽
中等第 31 題 · 觀測資料整理
CodeSprout 官方2026/10/04 00:19
官方解答 · 置頂Java

官方解答|觀測資料整理

官方解答|觀測資料整理

解題思路

依原索引走訪 nums,先依「非零」篩選原值,再套用 Integer.signum(x)。最後執行「依原順序輸出,保留重複值」;索引 i 始終是原陣列索引。

正確性與邊界

不直接修改 nums;空陣列自然產生空清單。若要求去重,去重的是轉換後的值,LinkedHashSet 同時保留首次出現順序。

複雜度

時間 O(n),額外空間 O(n)。

公開範例

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

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

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

import java.util.*;

public class Solution {

    public static List<Integer> solve(int[] nums) {
        List<Integer> result = new ArrayList<>();
        for (int i = 0; i < nums.length; i++) {
            int x = nums[i];
            if (x != 0) result.add(Integer.signum(x));
        }
        
        return result;
    }
}

留言討論 0