1. 程式人生 > 其它 >vue input中展示JSON資料時格式化展示

vue input中展示JSON資料時格式化展示

題目描述:

給你一個 升序排列 的陣列 nums ,請你 原地 刪除重複出現的元素,使每個元素 只出現一次 ,返回刪除後陣列的新長度。元素的 相對順序 應該保持 一致 。

由於在某些語言中不能改變陣列的長度,所以必須將結果放在陣列nums的第一部分。更規範地說,如果在刪除重複項之後有 k 個元素,那麼nums的前 k 個元素應該儲存最終結果。

將最終結果插入nums 的前 k 個位置後返回 k 。

示例 1:
輸入:nums = [1,1,2]
輸出:2, nums = [1,2,_]
解釋:函式應該返回新的長度 2 ,並且原陣列 nums 的前兩個元素被修改為 1, 2 。不需要考慮陣列中超出新長度後面的元素。

示例 2:
輸入:nums = [0,0,1,1,1,2,2,3,3,4]
輸出:5, nums = [0,1,2,3,4]
解釋:函式應該返回新的長度 5 , 並且原陣列 nums 的前五個元素被修改為 0, 1, 2, 3, 4 。不需要考慮陣列中超出新長度後面的元素。


提示:
0 <= nums.length <= 3 * 104
-104 <= nums[i] <= 104
nums 已按 升序 排列

解題思路:

我們定義:區間 [0..j] (注意這裡是左閉右閉區間)沒有出現重複元素,此時變數 j 是上一輪找到的第 1 次出現的元素的下標。迴圈變數 i 看到的數值 nums[i] 永遠和變數 j 看到的數值 nums[j] 進行比較。 相等繼續迴圈,不相等就將nums[i]賦值給nums[++j]即可,最後返回 j+1即可

程式碼如下:

class Solution {
    public int removeDuplicates(int[] nums) {
        int len = nums.length;
        if(len < 2) return len;
        
int j = 0; for(int i = 1;i < len;i++){ if(nums[j] != nums[i]) nums[++j] = nums[i]; } return j + 1; } }