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

【力扣】1089.复写零

原题链接:. - 力扣(LeetCode)

目录

1. 题目描述

2. 思路分析

3. 代码实现


1. 题目描述

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

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

2. 思路分析

双指针。

先根据“异地”操作,优化成双指针下的“就地”操作。

1. 先找到最后一个复写的数(也使用双指针算法):

(1)先判断cur位置的值

(2)决定dest向后移动一步或者两步

(3)判断一下dest是否已经到结束位置

(4)cur++

2. 处理一下边界情况:

       n-1 —> 0

        cur--

        dest -= 2

3.“从后向前”完成复写操作

3. 代码实现

class Solution {
public:void duplicateZeros(vector<int>& arr) {int cur=0,dest=-1,n=arr.size();while(cur<n){if(arr[cur]) dest++;else dest+=2;if(dest>=n-1) break;cur++;}if(dest==n){arr[n-1]=0;cur--,dest-=2;}while(cur>=0){if(arr[cur]) arr[dest--]=arr[cur--];else{arr[dest--]=0;arr[dest--]=0;cur--;}}}
};
http://www.lryc.cn/news/346273.html

相关文章:

  • Golang实践录:gin框架使用自定义日志模块
  • Django之配置数据库
  • Ajax 笔记02
  • 【隧道篇 / WAN优化】(7.4) ❀ 03. WAN优化的原理 ❀ FortiGate 防火墙
  • 网络爬虫概述与原理
  • 可视化实验三 Matplotlib库绘图及时变数据可视化
  • 开启多线程下变量共享与私有问题
  • Qt模型视图代理之QTableView应用的简单介绍
  • 第七届精武杯部分wp
  • 3.2Java全栈开发前端+后端(全栈工程师进阶之路)-前端框架VUE3框架-企业级应用- Vuex
  • 整合 Java, Python 和 Scrapy 爬虫以传递和使用参数
  • Android 蓝牙实战——蓝牙音乐播放进度(二十)
  • SQL注入实例(sqli-labs/less-1)
  • Python中tkinter编程入门3
  • XMind 2023 v23.05.2660软件安装教程(附软件下载地址)
  • docker compose kafka集群部署
  • 最新版在线客服系统源码
  • 【比邻智选】MR880A模组
  • 超大文件去除重复数据
  • ICode国际青少年编程竞赛- Python-4级训练场-列表综合练习
  • 苹果电脑怎么安装crossover 如何在Mac系统中安装CrossOver CrossOver Mac软件安装说明
  • C++学习————第十天(string的基本使用)
  • 华为OD介绍
  • 判断点在多边形内部
  • livox雷达斜装修改
  • 【Spring】初识 Spring AOP(面向切面编程)
  • k8s各个组件的作用
  • Spring Cloud 整合Sentinel
  • Java入门基础学习笔记4——开发Helloworld入门程序
  • 了解WebSocket