0


快来看,力扣 27.移除元素,新思路

做题链接:力扣


题干:

做题思路:

1.从前向后依次遍历
2.遇到要删除的直接向前覆盖
3.将尾值替换为'\0',便于返回数组时直接停止
4.每次覆盖完后记得长度自减一

注意:

这里的细节在于查重,覆盖后不能继续向后,应当在未覆盖前的位置重新开始向后遍历

图解分析

代码如下

注意看代码中的注释必要的话和图解一起理解

做题时要注意越界问题,查重过程,返回时的思想。

int removeElement(int* nums, int numsSize, int val){
    for(int i=0;i<numsSize;i++)
    {
        if(nums[i]==val)
        {
            //依次向前覆盖
            for(int j=i;j<numsSize-1;j++)
        {
            nums[j]=nums[j+1];
        }
        //这里是i--查重,防止下一位紧挨着的跳过去
        //应从原起点起步
        i--;
        //最后一位'\0'替换,数组长度就-1
        nums[numsSize-1]='\0';
        numsSize--;
        }

    }
    return numsSize;
    return nums;
}

Leetcode题解链接:

力扣 27移除数组


欢迎大家点赞评论噢,谢谢支持!!!

标签: leetcode 链表 算法

本文转载自: https://blog.csdn.net/weixin_53316121/article/details/123366051
版权归原作者 i跑跑 所有, 如有侵权,请联系我们删除。

“快来看,力扣 27.移除元素,新思路”的评论:

还没有评论