每日一题4

题目:26. 删除有序数组中的重复项

image-20230221133818076

image-20230221133842715

解答:

本人思路:再创建一个数组result,然后把nums数组的内容复制到result中,nums数据全部赋值10001(大于10000就行),然后两个数据依次比对(先把nums[0]=result[0]),把不相同的数据加入到nums中即可,最后得到目标数组。

class Solution {
    public int removeDuplicates(int[] nums) {
        int n=nums.length;
        int[] result=new int[n];
        for(int i=0;i<n;i++){
            result[i]=nums[i];
            nums[i]=10001;
        }
        int i=1,j=0;
        nums[0]=result[0];
        while(i<n){
            if(nums[j]==result[i]) i++;
            else{
                j++;
                nums[j]=result[i];
                i++;
            }
        }

    return j+1;
    }
}

官方答案:

image-20230221134405555

class Solution {
    public int removeDuplicates(int[] nums) {
        int n = nums.length;
        if (n == 0) {
            return 0;
        }
        int fast = 1, slow = 1;
        while (fast < n) {
            if (nums[fast] != nums[fast - 1]) {
                nums[slow] = nums[fast];
                ++slow;
            }
            ++fast;
        }
        return slow;
    }
}

作者:LeetCode-Solution
链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/solution/shan-chu-pai-xu-shu-zu-zhong-de-zhong-fu-tudo/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @ 2023-02-21 13:47  ZLey  阅读(8)  评论(0编辑  收藏  举报