😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱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题解系列】——移除元素。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘