26 Remove Duplicates from Sorted Array

參考連結:
https://blog.csdn.net/qq_40416052/article/details/82054747

此題不需要考慮長度後面的數字
e.g. [1,1,2]
將數組變成[2,1] , 返回length = 2

思路:
i指針記錄長度, j指針loop through list

用i慢指針記錄不等於的長度
用jj快指針loop through list,
如果nums[i] = nums[j], continue to loop直到不同,
然後當快慢指針值不相等時, 將快指針的值儲存到慢指針的值上
畫圖會更好理解這個算法
最後返回i++ 是因為數組中index 0 佔據了一個數值的原因

偽代碼:
loop through j
如nums[i] != nums[j];
i++
nums[i] = nums[j]

自己代碼:

class Solution {
    public int removeDuplicates(int[] nums) {
        if (nums.length == 0) return 0;
        
        int i =0;
        
        for (int j=0; j<nums.length; j++){
            if (nums[i]!=nums[j]){
                i++; //將快指針後移一位
                nums[i]=nums[j];
            }
        }
        return i+1;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容