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;
                }
            }
        }
    };
    
  • 相关阅读:
    java面向对象下:Java数据库编程
    异常处理小结
    drupal进入不了后台时候的解决办法,作者使用drush方案,已验证
    背后的幽灵“美国”
    2016第30周六
    2016第30周五
    Java 网络I/O模型
    2016第30周三-流媒体部分概念
    2016第30周二
    JS冲突解决方法
  • 原文地址:https://www.cnblogs.com/ZhaoxiCheung/p/leetcode-duplicate-zeros.html
Copyright © 2011-2022 走看看