leeCode算法--删除有序数组中重复的元素

题目:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

分析:给定一个有序的数组,删除重复元素,看到这个条件,我就能突然想到了冒泡排序,那么自然而然的就有了双指针的思路。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var removeDuplicates = function(nums) {
if (!nums) return
if ( nums && nums.length <= 1) return nums.length
let i = 0
let j = 1
while (j < nums.length) {
// 如果前一个和后一个不相等
// 那么就说明这俩个元素不重复,i++
if (nums[i] !== nums[j]) {
nums[i+1] = nums[j]
i++
}
j++
}
return i+1
};
removeDuplicates([0,0,1,1,1,2,2,3,3,4])
// 5

That’s all!

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2022 Lee
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信