我是靠谱客的博主 清爽哈密瓜,最近开发中收集的这篇文章主要介绍LeetCode题解(1089):复写列表中的零(Python),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目:原题链接(简单)

解法时间复杂度空间复杂度执行用时
Ans 1 (Python) O ( N 2 ) O(N^2) O(N2) O ( 1 ) O(1) O(1)48ms (82.04%)
Ans 2 (Python) O ( N ) O(N) O(N) O ( 1 ) O(1) O(1)44ms (91.02%)
Ans 3 (Python)

LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。

解法一(使用列表的插入方法):

def duplicateZeros(self, arr: List[int]) -> None:
    for i in range(len(arr) - 1, -1, -1):
        if arr[i] == 0:
            arr.insert(i, 0)
            arr.pop(-1)

解法二(两次遍历):

def duplicateZeros(self, arr: List[int]) -> None:
    # 统计一共复制了多少个0
    count = 0
    idx1 = 0
    while idx1 + count < len(arr):
        if arr[idx1] == 0:
            count += 1
        idx1 += 1

    idx1 -= 1  # 将循环中多自增的减回来

    idx2 = len(arr) - 1

    # 处理最后一个数字是0的情况,例如:[1, 0, 2, 3, 0, 0, 5, 0]
    if count + idx1 + 1 > len(arr):
        arr[idx2] = arr[idx1]
        idx1 -= 1
        idx2 -= 1
        count -= 1

    # 移动结果
    while count:
        arr[idx2] = arr[idx1]
        if arr[idx1] == 0:
            idx2 -= 1
            arr[idx2] = arr[idx1]
            count -= 1
        idx1 -= 1
        idx2 -= 1

最后

以上就是清爽哈密瓜为你收集整理的LeetCode题解(1089):复写列表中的零(Python)的全部内容,希望文章能够帮你解决LeetCode题解(1089):复写列表中的零(Python)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部