【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; 
}

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

相关推荐

  1. LeetCode[27]元素

    2024-01-22 10:50:10       39 阅读
  2. 元素——leetcode[1]

    2024-01-22 10:50:10       18 阅读
  3. LeetCode 27.元素

    2024-01-22 10:50:10       11 阅读
  4. LeetCode 27.元素

    2024-01-22 10:50:10       12 阅读
  5. LeetCode】203. 链表元素

    2024-01-22 10:50:10       32 阅读
  6. leetcode203. 链表元素

    2024-01-22 10:50:10       34 阅读
  7. LeetCode27.数组元素

    2024-01-22 10:50:10       46 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-22 10:50:10       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-22 10:50:10       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-22 10:50:10       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-22 10:50:10       18 阅读

热门阅读

  1. 【python学习】面向对象编程3

    2024-01-22 10:50:10       31 阅读
  2. LeetCode 每日一题 Day 47 - 50

    2024-01-22 10:50:10       34 阅读
  3. C++面试:向量vector和列表list介绍

    2024-01-22 10:50:10       27 阅读
  4. 齐次矩阵的理解深入和在图形学、Unity中的应用

    2024-01-22 10:50:10       30 阅读
  5. 面向海量异构数据分析的GBASE南大通用数据库

    2024-01-22 10:50:10       36 阅读