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;
                }
            }
        }
    };
    
  • 相关阅读:
    jquery另外一种类似tab切换效果
    简单的Tab切换组件
    switchable图片切换
    web前端性能优化总结
    iframe之间通信问题及iframe自适应高度问题
    javascript cookie
    grunt项目构建工具
    input全选与单选(把相应的value放入隐藏域去)
    Ajax跨域问题
    Jquery回到顶部功能
  • 原文地址:https://www.cnblogs.com/ZhaoxiCheung/p/leetcode-duplicate-zeros.html
Copyright © 2011-2022 走看看