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

【优选算法篇】2----复写零

---------------------------------------begin---------------------------------------

这道算法题相对于移动零,就上了一点点强度咯,不过还是很容易理解的啦~

题目解析:

这道题如果没理解好题目,是很难的,但理解题目就容易啦


讲解算法原理:

意思就是:一个数组长度是固定的,里面的元素,只要是0,就需要在原有的基础上,在0的后面多加一个0,以此类推,不为0的数就得往后移动,最后保持原有的数组长度不变,像上图第一个示例的5和0就是因为前面0要写两个,所以要被去掉~

编写代码:

class Solution 
{
public:
    void duplicateZeros(vector<int>& arr) 
    {
        int cur = 0, dest = -1;
        int 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--;
            }
        }
    }
};    

我这里实现主要是先遍历一遍数组,如果arr【cur】为非0,则dest走一步,cur++,如果为0,dest则走两步,直到dest到达最后一位,则break,此时cur的位置则为0复写后数组的最后一位数。

注意:在这里需要注意越界问题,如下图:

有一个0越界,直接n-1位置变为0,然后cur--,dest-=2即可!!!

------------------------------------end--------------------------------------------


http://www.kler.cn/a/511730.html

相关文章:

  • Java基础——概念和常识(语言特点、JVM、JDK、JRE、AOT/JIT等介绍)
  • IO进程----进程
  • ARM学习(42)CortexM3/M4 MPU配置
  • [JavaScript] 运算符详解
  • 2025年1月17日(点亮三色LED)
  • 通过图形界面展现基于本地知识库构建RAG应用
  • 打游戏黑屏了但是有游戏声音 原因分析
  • 口令攻击和钓鱼攻击
  • nvm的各种命令及其用途
  • spring那些事
  • 2021最新中高阶Android面试题总结,已整理成文档_android面试题2021中高级
  • Springboot项目启动优化详解
  • 详解position: sticky粘性定位
  • 性能优化之动态加载
  • Android APK的打包流程_android apk打包流程
  • iOS UIScrollView的一个特性
  • (k8s)k8s部署mysql与redis(无坑版)
  • opengrok_windows_环境搭建
  • 云原生周刊:K8s 生产环境架构设计及成本分析
  • pthread_exit函数
  • HTML之拜年/跨年APP(改进版)
  • 基于Java+SpringBoot+Vue的前后端分离的家具网站
  • 大数据学习(36)- Hive和YARN
  • Auto-go 环境配置
  • 华为升腾算子开发(一) helloword
  • 使用vscode在本地和远程服务器端运行和调试Python程序的方法总结