【leetcode】移除元素

大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️

目录

  • 一.暴力求解法
  • 二.使用额外数组
  • 三.原地修改数组

点击查看题目

一.暴力求解法

若我们不考虑时间复杂度,第一想到的方法应该都是暴力求解法吧:遍历数组,如果数组元素=val,用后面的元素将之覆盖。比较简单也不符合题意,就不写代码了

二.使用额外数组

第二种方法不符合题意,但由于能启发第三种方法,所以简单介绍一下
先创建一个元素个数大于或等于nums数组的数组tmp,src和dst分别是数组nums和tmp的下标,初始化都=0,当nums[src]不等于val时,将之拷贝到tmp数组中,拷贝的位置为tmp[dst],再src++,dst++;当nums[src]等于val时,直接src++。
时间复杂度为O(N),空间复杂度为O(N)

三.原地修改数组

创建变量src和dst,它们都是数组nums的下标,初始化都为0,当nums[src]不等于val时,让nums[dst]=nums[src],再src++,dst++,相当于src位置的元素保留;当nums[src]等于val时,直接src++,相当于src位置的元素被移除

int removeElement(int* nums, int numsSize, int val) {
    int src=0;
    int dst=0;
    for(int i=0;i<numsSize;i++)
    {
        if(nums[src]!=val)
        {
            nums[dst++]=nums[src++];
        }
        else
        {
            src++;
        }
    }  
    return dst; 
}

好了,那么本篇博客就到此结束了,如果你觉得本篇博客对你有些帮助,可以给个大大的赞👍吗,感谢看到这里,我们下篇博客见❤️

版权声明:本文为博主作者:苏貝貝原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/qq_75000174/article/details/135731708

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2024年2月19日
下一篇 2024年2月19日

相关推荐