LeetCode 26 删除有序数组中的重复项

1、通过重新定义一个新的数组,然后将其重新赋值给nums数组,输出此时的index,该方法需要额外的内存

java 复制代码
class Solution {
    public int removeDuplicates(int[] nums) {
        int[] res = new int[nums.length];
        res[0] = nums[0];
        int index = 1;
        for( int i=1;i<nums.length;i++ ) {
            if(nums[i]!=nums[i-1]) {
                res[index] = nums[i];
                index++;
            }
        }
        for(int i=0;i<nums.length;i++) {
            nums[i] = res[i];
        }
        return index;
    }
}

2、或者是使用双指针可以节省额外的内存空间

java 复制代码
class Solution {
    public int removeDuplicates(int[] nums) {
        int slow = 0;
        for(int fast=1;fast<nums.length;fast++) {
            if(nums[fast] != nums[slow]) {
                slow++;
                nums[slow]=nums[fast];
            }
        }
        return slow+1;
    }
}

其实两个不同的指针就可以得到两个不同的数组,只是原数组无法复原,并且要在彼此不相互干扰的情况下,才能正确用双指针解答

相关推荐
2351610 小时前
【LeetCode】146. LRU 缓存
java·后端·算法·leetcode·链表·缓存·职场和发展
tkevinjd13 小时前
反转链表及其应用(力扣2130)
数据结构·leetcode·链表
程序员烧烤15 小时前
【leetcode刷题007】leetcode116、117
算法·leetcode
Swift社区18 小时前
LeetCode 395 - 至少有 K 个重复字符的最长子串
算法·leetcode·职场和发展
Espresso Macchiato18 小时前
Leetcode 3710. Maximum Partition Factor
leetcode·职场和发展·广度优先遍历·二分法·leetcode hard·leetcode 3710·leetcode双周赛167
巴里巴气18 小时前
第15题 三数之和
数据结构·算法·leetcode
西阳未落19 小时前
LeetCode——双指针(进阶)
c++·算法·leetcode
熬了夜的程序员21 小时前
【LeetCode】69. x 的平方根
开发语言·算法·leetcode·职场和发展·动态规划
Swift社区1 天前
LeetCode 394. 字符串解码(Decode String)
算法·leetcode·职场和发展
tt5555555555551 天前
LeetCode进阶算法题解详解
算法·leetcode·职场和发展