Skip to content

Latest commit

 

History

History
78 lines (68 loc) · 1.47 KB

RemoveDuplicatesfromSortedArray.md

File metadata and controls

78 lines (68 loc) · 1.47 KB

Two pointers

 public int removeDuplicates(int[] nums) {
     if (nums == null || nums.length == 0) return 0;
            int i = 1, j = 0;
            while (i < nums.length) {
                if (nums[i] > nums[j]) {
                    nums[++j] = nums[i];
                }
                i++;
            }
            return j+1;
        }
class Solution {
    public int removeDuplicates(int[] nums) {
        int i = 0;
    for (int n : nums)
        if (i == 0 || n > nums[i-1])
            nums[i++] = n;
    return i;
    }
}
public class Solution
{
    public int removeDuplicates(int[] nums)
    {
        int dupes = 0;
        
        for (int i = 1; i < nums.length; i++)
        {
            if (nums[i] == nums[i - 1])
                dupes++;
            
            nums[i - dupes] = nums[i];
        }
        
        return nums.length - dupes;
    }
}
  • Using 2 pointers.
  • Time Complexity: O(N)
  • Space Complexity: O(1)
  • N = Length of input array.
class Solution {
    public int removeDuplicates(int[] nums) {
        if (nums == null) {
            throw new IllegalArgumentException("Input is invalid");
        }

        int len = nums.length;
        if (len <= 1) {
            return len;
        }

        int insertPos = 0;
        for (int i = 1; i < len; i++) {
            if (nums[i] != nums[insertPos]) {
                nums[++insertPos] = nums[i];
            }
        }

        return insertPos + 1;
    }
}