← Two Pointers

Remove Duplicates Sorted

Easy
Python
def remove_duplicates(nums):
    if not nums: return 0
    k=1
    for i in range(1,len(nums)):
        if nums[i]!=nums[i-1]: nums[k]=nums[i]; k+=1
    return k
Java
public int removeDuplicates(int[] nums){
    if(nums.length==0) return 0;
    int k=1;
    for(int i=1;i<nums.length;i++)
        if(nums[i]!=nums[i-1]) nums[k++]=nums[i];
    return k;
}

Key Insight

Deduplication. 'not nums' vs length==0.

Python → Java Differences

  • 'not nums' vs nums.length==0
  • k+=1 vs k++
  • Write-pointer identical
Python
def remove_duplicates(nums):
    if not nums: return 0
    k=1
    for i in range(1,len(nums)):
        if nums[i]!=nums[i-1]: nums[k]=nums[i]; k+=1
    return k
Java
public int removeDuplicates(int[] nums){
    if(nums.length==0) return 0;
    int k=1;
    for(int i=1;i<nums.length;i++)
        if(nums[i]!=nums[i-1]) nums[k++]=nums[i];
    return k;
}

Algorithm Steps

1. Write pointer k
2. Copy if different from prev