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

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

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

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

  • 前言🙌
    • 移除元素🙌
      • 解题思路分析 😍
      • 解题思路一 :源代码分享:😍
      • 程序输出结果验证:😊
  • 总结撒花💞


追梦之旅,你我同行

   
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
在这里插入图片描述

前言🙌

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

移除元素🙌

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

解题思路分析 😍

(1)画图分析:

【快乐手撕LeetCode题解系列】——移除元素
(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题解系列】——移除元素

总结撒花💞

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