LeetCode简单题之复写零
生活随笔
收集整理的这篇文章主要介绍了
LeetCode简单题之复写零
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目
给你一个长度固定的整数数组 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+=1if i+count>len(arr)-1: #如果插入的0已经在数组外面则中断breaktemp.append(i+count)for i in temp: #按照算好的位置插入0,然后删除末尾元素arr.insert(i,0)arr.pop()
总结
以上是生活随笔为你收集整理的LeetCode简单题之复写零的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: LeetCode简单题之两数之和 IV
- 下一篇: LeetCode简单题之分糖果 II