add 80 solution explain

This commit is contained in:
novahe
2021-05-25 22:21:37 +08:00
parent 38875b19fb
commit 7a3fe1fed2
3 changed files with 14 additions and 12 deletions

View File

@ -2,8 +2,8 @@ package leetcode
func removeDuplicates(nums []int) int {
slow := 0
for i, v := range nums {
if i < 2 || nums[slow-2] != v {
for fast, v := range nums {
if fast < 2 || nums[slow-2] != v {
nums[slow] = v
slow++
}

View File

@ -51,6 +51,6 @@ for (int i = 0; i < len; i++) {
## 解题思路
这道题和第 26 题很像。是第 26 题的加强版。这道题和第 283 题,第 27 题基本一致283 题是删除 027 题是删除指定元素,这一题是删除重复元素,实质是一样的
这里数组的删除并不是真的删除只是将删除的元素移动到数组后面的空间内然后返回数组实际剩余的元素个数OJ 最终判断题目的时候会读取数组剩余个数的元素进行输出。
问题提示有序数组,一般最容易想到使用双指针的解法,双指针的关键点:移动两个指针的条件
在该题中移动的条件:快指针从头遍历数组,慢指针指向修改后的数组的末端,当慢指针指向倒数第二个数与快指针指向的数不相等时,才移动慢指针,同时赋值慢指针
处理边界条件:当数组小于两个元素时,不做处理