zoukankan      html  css  js  c++  java
  • [LeetCode] 1089. Duplicate Zeros

    使用 Java 爬取 LeetCode 题目内容以及提交的AC代码

    传送门

    Description

    Given a fixed length array arr of integers, duplicate each occurrence of zero, shifting the remaining elements to the right.

    Note that elements beyond the length of the original array are not written.

    Do the above modifications to the input array in place, do not return anything from your function.

    Example 1:

    Input: [1,0,2,3,0,4,5,0]
    Output: null
    Explanation: After calling your function, the input array is modified to: [1,0,0,2,3,0,0,4]
    

    Example 2:

    Input: [1,2,3]
    Output: null
    Explanation: After calling your function, the input array is modified to: [1,2,3]

    Note:

    1. 1 <= arr.length <= 10000
    2. 0 <= arr[i] <= 9

    思路

    题意:给定一个固定长度的整数数组arr,复制每次出现的零,将剩余的元素向右移动。不使用其他辅助数据结构对输入数组进行上述修改。

    题解:不使用其他辅助数据结构对数组进行原地修改,那么通过一个变量来记录数组中零值的个数,从后往前遍历,交换数组中的值。

    static const auto io_sync_off = []()
    {
        // turn off sync
        std::ios::sync_with_stdio(false);
        // untie in/out streams
        std::cin.tie(nullptr);
        return nullptr;
    }();
    
    class Solution {
    public:
        void duplicateZeros(vector<int>& arr) {
            int zeroCnt = 0;
            int size = arr.size();
            for (int i = 0; i < size; i++){
                if (arr[i] == 0)    zeroCnt++;
            }
            int j = size + zeroCnt;
            for (int i = size - 1; i >= 0; i--){
                if (--j < size)    arr[j] = arr[i];
                if (arr[i] == 0 && --j < size){
                    arr[j] = 0;
                }
            }
        }
    };
    
  • 相关阅读:
    前后台分离--概念相关
    dubbo概述
    memcache
    分布式系统事务
    2018书单索引
    Lucene原理之概念
    java 通用对象排序
    LightOJ1214 Large Division —— 大数求模
    LightOJ1336 Sigma Function —— 质因子分解、约数和为偶数
    LightOJ1245 Harmonic Number (II) —— 规律
  • 原文地址:https://www.cnblogs.com/ZhaoxiCheung/p/leetcode-duplicate-zeros.html
Copyright © 2011-2022 走看看