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

双指针(5)—复写零

文章目录

  • 题目解析
    • 方法一:双指针
    • 附Java代码

力扣题目:复写零

题目解析

在这里插入图片描述

方法一:双指针

算法思路:
[1,0,0,2,3,0,0,4]
如果「从前向后」进⾏原地复写操作的话,由于
0
的出现会复写两次,导致没有复写的数「被覆
盖掉」。因此我们选择「从后往前」的复写策略。
但是「从后向前」复写的时候,我们需要找到「最后⼀个复写的数」,因此我们的⼤体流程分两
步:
i. 先找到最后⼀个复写的数;
ii. 然后从后向前进⾏复写操作。

class Solution {
public:
    void duplicateZeros(vector<int>& arr) {
        int n = arr.size();
        int top = 0;
        int i = -1;
        while (top < n) {
            i++;
            if (arr[i] != 0) {
                top++;
            } else {
                top += 2;
            }
        }
        int j = n - 1;
        if (top == n + 1) {
            arr[j] = 0;
            j--;
            i--;
        } 
        while (j >= 0) {
            arr[j] = arr[i];
            j--;
            if (!arr[i]) {
                arr[j] = arr[i];
                j--;
            } 
            i--;
        }
    }
};

附Java代码

class Solution {
    public void duplicateZeros(int[] arr) {
        int n = arr.length;
        int top = 0;
        int i = -1;
        while (top < n) {
            i++;
            if (arr[i] != 0) {
                top++;
            } else {
                top += 2;
            }
        }
        int j = n - 1;
        if (top == n + 1) {
            arr[j] = 0;
            j--;
            i--;
        } 
        while (j >= 0) {
            arr[j] = arr[i];
            j--;
            if (arr[i] == 0) {
                arr[j] = arr[i];
                j--;
            } 
            i--;
        }
    }
}


相关文章:

  • 层归一化详解及在 Stable Diffusion 中的应用分析
  • AI烘焙大赛中的算法:理解PPO、GRPO与DPO最简单的方式
  • 类和对象(下篇)(详解)
  • nginx中的try_files指令
  • UML组件图
  • 2025年前端框架全景解析:React、Vue、Angular的生态与未来之争
  • 南柯电子|EMC电磁兼容性摸底检测测试整改:技术挑战与解决方案
  • python全栈-JavaScript
  • Kaggle房价预测
  • 即时访问成为降低风险的关键
  • Scoop + Kotlin 极简开发环境搭建指南
  • 第二十:mysql——Undo Log、Redo Log和Binlog
  • apollo系统车辆集成介绍(未完代续
  • Guava Cache 实战:构建高并发场景下的字典数据缓存
  • 文生视频提示词编写指南(进阶篇)
  • Python数据爬取
  • VMware Workstation安装C9800CL
  • UML对象图
  • 云存储服务器的作用都有哪些?
  • win10安装wget工具
  • 用数字做域名的网站/爱站长工具
  • 做临时工看哪个网站/整合营销沟通
  • 银川网站建设多少钱/免费的云服务器有哪些
  • 网页加速器哪个好/谷歌seo网站建设
  • 河南省建设厅网站首页/免费的推广软件下载
  • 网站的积分系统怎么做/品牌网站建设解决方案