LeetCode26 删除有序数组中的重复项 Go语言

https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/

在这里插入图片描述

func removeDuplicates(nums []int) int {
    
    
    n := len(nums)
    if n<2{
    
    
        return n
    }
    low := 0
    fast := 0
    for fast<n {
    
    
        if nums[low]==nums[fast]{
    
    
            fast++
        }else{
    
    
            low++
            nums[low] = nums[fast]
            fast++
        }
    }
    nums = nums[:low+1]
    return low+1
}

思路:

  1. 思路一,我最先想到的直白点的方法就是,维护一个变量i,然后往后遍历,如果i和i-1是一样的,就如下的方法删除这个变量,如果不一样就i++,直到i>=len(nums)退出循环。这个思路的消耗有点大,不是很推荐。
nums[i] = append(nums[:i],nums[i+1:]...)
  1. 思路二,就是如图所示的双指针的方式,把不一样的移到数组的前面去,遍历完后只取前面部分的数组。我用这个方法提交了两次,第一次n的部分我都是直接使用len(nums)好像消耗比较大,就把数组长度用n存下来了。然后就双百了。

猜你喜欢

转载自blog.csdn.net/rglkt/article/details/122484595
今日推荐