LeetCode 1089. 复写零 Duplicate Zer

作者: 1江春水 | 来源:发表于2019-08-09 10:36 被阅读3次

【题目描述】
给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。
注意:请不要在超过该数组长度的位置写入元素。
要求:请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。

【示例1】

输入:[1,0,2,3,0,4,5,0]
输出:null
解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]

【示例2】

输入:[1,2,3]
输出:null
解释:调用函数后,输入的数组将被修改为:[1,2,3]

【提示】

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

【思路1】
1、循环遍历数组,找到0的位置index
2、数组从后向前遍历,依次向后移位,直到index+1的位置
3、赋值arr[index+1] = 0
4、外层遍历的i++,因为插入了一个0
5、时间复杂度O(n^2)
6、空间复杂度O(1)

Swift代码实现:

func duplicateZeros(_ arr: inout [Int]) {
    var i = 0
    while i < arr.count {
        if arr[i] == 0 {
            var tmp = arr.count-1
            while tmp-i > 1 {
                arr[tmp] = arr[tmp-1]
                tmp-=1
            }
            arr[tmp] = 0
            i+=1
        }
        i+=1
    }
}

【思路2】这个咋没想到呢 😔
1、只需一次遍历
2、找到0的index,直接index+1 赋值0
3、遍历数i++
4、去掉数组最后一位
5、时间复杂度O(n)
6、空间复杂度O(1)

Swift代码实现:

func duplicateZeros(_ arr: inout [Int]) {
    var i = 0
    while i < arr.count {
        if arr[i] == 0 {
            arr.insert(0, at: i+1)
            arr.removeLast()
            i+=1
        }
        i+=1
    }
}

相关文章

  • LeetCode:1089. 复写零

    问题链接 1089. 复写零[https://leetcode.cn/problems/duplicate-zer...

  • LeetCode 1089. 复写零 Duplicate Zer

    【题目描述】给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意...

  • Leetcode 1089. 复写零

    题目描述 给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意...

  • 1089. 复写零

    给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在...

  • 1089. 复写零(Swift)

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/duplic...

  • LeetCode 1089. Duplicate Zeros

    问题 问题描述:给出一个定长的正数数组 arr,将其中出现的每个 0 都重复一次,其他的元素右移。注意不能写入超...

  • [LeetCode]1089. Duplicate Zeros

    Given a fixed length array arr of integers, duplicate eac...

  • LeetCode 1089. Duplicate Zeros (

    Given a fixed length array arr of integers, duplicate eac...

  • leetcode之复写零

    序 本文主要记录一下leetcode之复写零 题目 题解 小结 这里遍历数组,计算值为0的个数count,然后从后...

  • LeetCode.1089-重复的0(Duplicate Zer

    这是小川的第392次更新,第423篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第2...

网友评论

    本文标题:LeetCode 1089. 复写零 Duplicate Zer

    本文链接:https://www.haomeiwen.com/subject/dajcjctx.html