前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言每日一题(63)复写零

C语言每日一题(63)复写零

作者头像
对编程一片赤诚的小吴
发布2024-03-13 09:01:21
970
发布2024-03-13 09:01:21
举报

题目链接

力扣网 1089 复写零

题目描述

给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。

注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。

示例 1:

代码语言:javascript
复制
输入:arr = [1,0,2,3,0,4,5,0]
输出:[1,0,0,2,3,0,0,4]
解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]

示例 2:

代码语言:javascript
复制
输入:arr = [1,2,3]
输出:[1,2,3]
解释:调用函数后,输入的数组将被修改为:[1,2,3]

提示:

  • 1 <= arr.length <= 104
  • 0 <= arr[i] <= 9

思路分析

知识点:双指针

解析:

思路1

按照题目要求直接实现,定义两个指针cur和dest,两个指针从零开始,cur用来扫描整个数组。

1.当arr【cur】等于0时,将dest指针移动到cur位置,然后cur加一,从cur位置开始到整个数组结束,元素整体向右移动,最后在cur位置加个0即可。

2.当arr【cur】不等于0时,cur往下走,dest不动。

代码语言:javascript
复制
void duplicateZeros(int* arr, int arrSize) {
    int cur=0;
    int dest=0;
    while(cur<arrSize)
    {
        if(arr[cur]==0)
        {
            int end=arrSize-1;
            dest=cur;
            while(end>dest)
            {
                arr[end]=arr[end-1];
                end--;
            }
            arr[cur++]=0;
        }
        cur++;
    }
    
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目链接
  • 题目描述
  • 思路分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档