题目地址

解题思路

主要是统计有序数组中的重复项,可以利用快慢指针,慢指针slow默认是1,快指针fast也是1,快指针的当前的值和前一个的值如果不相等,那么当前数组的slow项的值为数组fast项的值。快指针继续向后运行,慢指针也加1。最后返回慢指针的计数

代码

  1. var removeDuplicates = function(nums) {
  2. const n = nums.length;
  3. if(n === 0 ){
  4. return 0;
  5. }else {
  6. let slow = 1,fast = 1;
  7. while(fast < n){
  8. if(nums[fast] != nums[fast-1]){
  9. nums[slow] = nums[fast]
  10. ++slow;
  11. }
  12. ++fast
  13. }
  14. return slow;
  15. }
  16. };
  17. //const nums = [1,1,2];
  18. const nums = [0,0,1,1,1,1,2,2,2,3,3,4]
  19. console.log('--result--',removeDuplicates(nums));

总结

利用快慢指针(双指针),类似的有leetcode:380题目