python 练习题-复写零(LeetCode 1089)
1 题目: 2 3 给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 4 5 注意:请不要在超过该数组长度的位置写入元素。 6 7 要求:请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。 8 9 10 11 示例 1: 12 13 输入:[1,0,2,3,0,4,5,0] 14 输出:null 15 解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4] 16 示例 2: 17 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]))
结果:
查看大佬们的博客后,发现,其他思路很不错:
先去掉后面的,然后再出现0的后一位插入0,博客链接:https://blog.csdn.net/weixin_44740082/article/details/95379428
题目来源:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/duplicate-zeros