python 练习题-复写零(LeetCode 1089)

 1 题目:
 2 
 3 给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。
 4 
 5 注意:请不要在超过该数组长度的位置写入元素。
 6 
 7 要求:请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。
 8 
 9  
10 
11 示例 112 
13 输入:[1,0,2,3,0,4,5,0]
14 输出:null
15 解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]
16 示例 217 
18 输入:[1,2,3]
19 输出:null
20 解释:调用函数后,输入的数组将被修改为:[1,2,3]

思路:

判断如果出现0,标记一下,下一位等于0,后一位的值 等于 前一位的值

 1 class Solution(object):
 2     def duplicateZeros(self, arr):
 3         """
 4         :type arr: List[int]
 5         :rtype: None Do not return anything, modify arr in-place instead.
 6         """
 7         l = len(arr)
 8 
 9         x = 1000
10         for i in range(0, l):
11             if arr[i] == 0 and x +1!=i:
12                 x = i
13                 for j in range(l-1, i,-1):
14                     if i+1 < l:
15                         arr[j] = arr[j-1]
16                 if i+1 <l:
17                     arr[i + 1] = 0
18         return arr
19 
20 print (Solution.duplicateZeros(0,[1,2,3]))
View Code

结果:

查看大佬们的博客后,发现,其他思路很不错:

先去掉后面的,然后再出现0的后一位插入0,博客链接:https://blog.csdn.net/weixin_44740082/article/details/95379428

题目来源:

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

原文地址:https://www.cnblogs.com/whycai/p/14311007.html