Go语言学习之力扣-移除元素|Go主题月

342 阅读1分钟

作者:看那个码农

公众号:看那个码农

上期内容介绍了Go语言学习之力扣-删除有序数组中的重复项|Go主题月

  • 删除有序数组中的重复项

本篇内容将继续带领大家走进Go语言的世界。

1.本文简介

Go语言学习之力扣-移除元素

来源于:Leetcode27. 移除元素

2.题目描述

给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用O(1)额外空间并 原地 修改输入数组。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例 1:

输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为2。
你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为2,
而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。

提示:

  • 0 <= nums.length <= 100
  • 0 <= nums[i] <= 50
  • 0 <= val <= 100

3.思路与方法

由题意最后只用输出新数组的长度

  • 我们可以利用遍历,从数组第一个元素进行遍历;
  • 依次对比元素是否与给定的目标值相同,将不同的元素往前移动;
  • 最后输出数组不同元素的那部分长度即可。

例如:我们用一个例子来直观地说明。

设定一个初始数组,给定的目标值为3

num=[1,1,2,2,3,3],val=3

设定两个起点进行遍历

node=0,i=1,
num[node]=1,num[i]=1,

设定1个起点:i=0进行数组遍历。

设定1个节点: node=0 用于把和给定目标值不相同的数组元素往数组前面移动。

如果num[i]!=val 则令num[node]=num[i] 利用这样的方式,将同一个数组与给定目标值不同的元素都往前移动。

4.代码实现如下:

func removeElement(nums []int, val int) int {
    node:=0
    for i:=0;i<len(nums);i++{
        if nums[i]!=val{ 
            nums[node]=nums[i]
            node++
        }
    }
    return node
}

输出为:

image.png

如果你觉得这篇内容对你有帮助的话:

1、点赞支持下吧,让更多的人也能看到这篇内容

2、关注公众号:看那个码农,我们一起学习一起进步。