0
点赞
收藏
分享

微信扫一扫

LeetCode简单题之复写零

滚过红尘说红尘 2022-02-09 阅读 78

题目

给你一个长度固定的整数数组 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 <= arr.length <= 10000
0 <= arr[i] <= 9
来源:力扣(LeetCode)

解题思路

  题目的意思很简单就是在遍历数组的时候如果遇到0,就在它后面添加一个0,按照示例1的模板,不难发现原数组的长度在添加完0后不变,多出的部分被删掉了,所以就是添加几个0就从末端删除几个元素。

class Solution:
    def duplicateZeros(self, arr: List[int]) -> None:
        """
        Do not return anything, modify arr in-place instead.
        """
        temp=[]
        count=-1  #定位不同的0所在的位置
        for i in range(len(arr)): 
            if arr[i]==0:
                count+=1
                if i+count>len(arr)-1:  #如果插入的0已经在数组外面则中断
                    break
                temp.append(i+count)
        for i in temp:  #按照算好的位置插入0,然后删除末尾元素
            arr.insert(i,0)
            arr.pop()

在这里插入图片描述

举报

相关推荐

0 条评论