关于golang:Leetcode专题数组26删除有序数组中的重复项

28次阅读

共计 417 个字符,预计需要花费 2 分钟才能阅读完成。

力扣链接:https://leetcode-cn.com/probl…
解题思路

  1. 题目中数组为升序数组,升序这个前提保障了雷同的元素肯定是相邻的
  2. 要原地删除,就不能变换位置或者借用长期空间
  3. 要保障元素的绝对地位不变动
    在数组解题中,快慢指针是常常会用到的解法,首先应用一个慢指针指向数组的结尾,快指针指向慢指针的下一个地位,快指针开始遍历,若遇见与慢指针相等的数字,则将快指针持续遍历,直到遇到第一个不相等的数字,将该值替换慢指针的下一个地位,同时慢指针右移一位,顺次循环,最初返回数组长度时留神加 1,因为慢指针下标从 0 开始
func removeDuplicates(nums []int) int {
    lower := 0
    for fast := 1; fast < len(nums); fast++ {if nums[fast] == nums[lower] {continue}
        nums[lower+1] = nums[fast]
        lower++
    } 
    return lower + 1
}

正文完
 0