LeetCode - 167. Remove Duplicates from Sorted Array
Thoughts:
I choose two pointer to solve this problem,
when I need to compare two values and the array is sorted.
The time complexity is O(n) for the iteration.
Thoughts visuzlization:
nums = [0,0,1,1,1,2,2,3,3,4]
i is right pointer, represented the cusor of current element
k is left pointer, represented the cursor that need to be checked with current value
if the value is different, move k pointer to right and do nums[k] = nums[i]
in the end, no matter the value is different or not, always move i pointer to right
[0,0,1,1,1,2,2,3,3,4] initial array, same value, move i pointer to right
 i
 k
[0,0,1,1,1,2,2,3,3,4] same value, move i pointer to right
   i
 k
[0,0,1,1,1,2,2,3,3,4] meet different value
     i
 k
[0,0,1,1,1,2,2,3,3,4] move k pointer to right
     i
   k
[0,1,1,1,1,2,2,3,3,4] do nums[k] = nums[i]
     i
   k
[0,1,1,1,1,2,2,3,3,4] move i pointer to right
       i
   k
...
repeat the process until the end of the array,
and the k pointer will be the index of the last element that is not duplicated,
so I need to do k + 1
Code:
/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function (nums) {
  let k = 0;
  for (let i = 0; i < nums.length; i++) {
    if (nums[k] !== nums[i]) {
      k++;
      nums[k] = nums[i];
    }
  }
  return k + 1;
};
Reference
Copyright © 2024 | All rights reserved.