【每日一题】——移除元素

博客主页:PH_modest的博客主页
当前专栏:每日一题
其他专栏:
每日反刍
C++跬步积累
C语言跬步积累
座右铭:广积粮,缓称王!

机缘

最初认识到CSDN是在b站视频里看到的,但当时还并没有成为博主的想法,后来遇到了鹏哥,在他的建议下我开始尝试着写博客记录我的学习历程。


收获

这过程中遇到了许多志同道合的伙伴,从他们的文章中我也学到了很多,也正是看到他们的努力使我也不敢懈怠。写博客不仅仅是为了分享知识,更是自我能力的提升,可以是自己对这部分知识理解更加透彻,也方便自己日后的复习查找。


日常

目前写博客已经成为了我生活中的一部分,通过写博客来巩固知识点


成就

目前我写过的最好的代码就是通讯录的实现,由于代码过长就不展示了,之后有时间会单独写一篇博客进行讲解。


憧憬

目前的目标是和同学一起写一个管理系统,坚持每天写题目,提升自己的代码能力,键盘敲烂,年薪30W,让我们一起努力吧!

最后就以题目来结尾吧

题目描述

【每日一题】——移除元素_第1张图片

题目链接:27 . 移除元素 - 力扣(LeetCode)

思路分析

由于题目要求删除数组中等于 val 的元素,因此输出数组的长度一定小于等于输入数组的长度,我们可以把输出的数组直接写在输入数组上。可以使用快慢指针的思想来解题,i就可以看成是那个快指针,指向当前需要处理的元素,j可以看成慢指针指向下一个将要赋值的位置。
整个过程保持不变的性质是:区间 [0,j)之间的元素都不等于val,并且j的值就是输出数组的长度
【每日一题】——移除元素_第2张图片

代码展示

//时间复杂度:O(N)
//空间复杂度:O(1)
int removeElement(int* nums, int numsSize, int val)
{
    int i=0;
    int j=0;
    for(i=0;i<numsSize;i++)
    {
        if(*(nums+i)!=val)
        {
            nums[j++]=nums[i];
        }
    }
    return j;
}

最后的最后:

每日一题系列旨在养成刷题的习惯,所以对代码的解释并不会特别详细,但足够引导大家写出来,选的题目都不会特别难,但也不是特别简单,比较考验大家的基础和应用能力,我希望能够将这个系列一直写下去,也希望大家能够和我一起坚持每天写代码。

在这里送大家一句话:广积粮,缓称王!

Tips

  1. 您发布的文章将会展示至 里程碑专区 ,您也可以在 专区 内查看其他创作者的纪念日文章
  2. 优质的纪念文章将会获得神秘打赏哦

你可能感兴趣的:(每日一题,算法,leetcode,学习,c语言,数据结构)