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;
                }
            }
        }
    };
    
  • 相关阅读:
    thinkphp5ajax分頁&&搜索後分頁
    yii框架多文件上傳
    Redis:Linux安装与使用
    JSP使用Struts2标签库报错
    Dubbo:3
    Dubbo:1
    Dubbo:2
    zookeeper:master选举
    zookeeper:分布式锁简单实现(JavaApi)
    zookeeper:Curator操作节点
  • 原文地址:https://www.cnblogs.com/ZhaoxiCheung/p/leetcode-duplicate-zeros.html
Copyright © 2011-2022 走看看