当前位置: 首页 > news >正文

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

题目链接

力扣网 1089 复写零

题目描述

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

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

示例 1:

输入: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:

输入: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不动。

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++;}}

http://www.lryc.cn/news/316874.html

相关文章:

  • ElasticSearch聚合查询
  • 【毕设级项目】基于AI技术的多功能消防机器人(完整工程资料源码)
  • 【一】【设计模式】类关系UML图
  • 【DevOps基础篇】容器化架构基础设施监控方案
  • 【QT】文件流操作(QTextStream/QDataStream)
  • CentOS 7 devtoolset编译addressSanitizer版本失败的问题解决
  • ubuntu2004桌面系统英伟达显卡驱动安装方法
  • Java通过Excel批量上传数据!!!
  • 【PyQT/Pysider】控件背景渐变
  • ChatGPT-4 VS 文心一言4.0
  • MYSQL------从概述到DQL
  • MATLAB算法实战应用案例精讲-【图像处理】图像识别(基础篇)(二)
  • Leetcode 3.12
  • 【天池课堂】零基础入门数据挖掘-课程汇总
  • 表单进阶(3)-上传文件和隐藏字段
  • LLM(大语言模型)常用评测指标-MAP@R
  • 腾讯面经学习笔记
  • 北京某中厂凉经
  • 离线数仓(五)【数据仓库建模】
  • python | 类与对象
  • 基于Qt 和python 的自动升级功能
  • 【论文阅读】IEEE Access 2019 BadNets:评估深度神经网络的后门攻击
  • Unity 让角色动起来(动画控制器)
  • ubuntu22.04环境中安装pylint
  • 主流数据库的区别
  • veeam备份基础
  • Flink并行度
  • 这届留学生是懂作弊的,ChatGPT震惊教授一整年!
  • CVE-2023-38836 BoidCMSv.2.0.0 后台文件上传漏洞
  • pf4j插件实践验证