当前位置:首页 » 《随便一记》 » 正文

【快乐手撕LeetCode题解系列】——移除元素

15 人参与  2023年04月26日 19:34  分类 : 《随便一记》  评论

点击全文阅读


【快乐手撕LeetCode题解系列】——移除元素?

前言?移除元素?解题思路分析 ?解题思路一 :源代码分享:?程序输出结果验证:? 总结撒花?
追梦之旅,你我同行

   
?博客昵称:博客小梦
?最喜欢的座右铭:全神贯注的上吧!!!
?作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!
?博主小留言:哈喽!?各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!?
在这里插入图片描述

前言?

    哈喽各位友友们?,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!?我仅已此文,和大家分享【快乐手撕LeetCode题解系列】——移除元素~ 都是精华内容,可不要错过哟!!!???

移除元素?

题目描述:
在这里插入图片描述
在这里插入图片描述

解题思路分析 ?

(1)画图分析:

在这里插入图片描述
(2)文字讲解

第一种思路,就是覆盖删除。遍历这个数组,找到每一个val值,然后移动后面的元素进行覆盖删除。这种算法的时间复杂度是O(n^2),空间复杂度为O(1)。在个题目跑不过去,太慢了第二种思路是,新建立一个数组,将不是val的值存放到新的数组当中。然后放回新数组的元素个数即可。时间复杂度是O(n),空间复杂度是O(n)。第三种思路,利用双指针(双下标)。当src指向的数组元素等于val时,只让src++即可。如果不等于val,则让src的值赋值给dst位置的元素,然后让dst和src都往后走一步即可。这个算法的时间复杂度是O(n),空间复杂度是O(1)

解题思路一 :源代码分享:?

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

程序输出结果验证:?

在这里插入图片描述

总结撒花?

   本篇文章旨在分享【快乐手撕LeetCode题解系列】——移除元素。希望大家通过阅读此文有所收获!?如果我写的有什么不好之处,请在文章下方给出你宝贵的意见?。如果觉得我写的好的话请点个赞赞和关注哦~???


点击全文阅读


本文链接:http://zhangshiyu.com/post/60060.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1