【Leetcode-Hot100】移动零

题目

解答

首先,使用的解题思路是:使用两个指针,分别指向数组的第一个0元素位置,以该元素位置+1为起始点寻找接下来第一个非0元素位置。二者确定后,对其进行交换。随后继续寻找下一个0元素位置。重复上述操作。

但第一次提交时出错,提示数组下标溢出。因此增加了对溢出情况的判断,考虑到两种指针,无论哪种指针溢出时,都代表交换已经完成,因此直接返回即可。

python 复制代码
class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        p_zero = 0
        p_one = 0
        l = len(nums)
        if l == 1:
            return nums
        while p_one < l :
            while nums[p_zero] != 0:
                p_zero += 1
                if p_zero == l: # 增加判断
                    return nums

            p_one = p_zero + 1
            if p_one == l:  # 增加判断
                return nums

            while nums[p_one] == 0:
                p_one += 1
                if p_one == l:   # 增加判断
                    return nums
            
            med = nums[p_one]
            nums[p_one] = nums[p_zero]
            nums[p_zero] = med
            p_zero += 1

        return nums      

看了一眼 怎么会如此耗时? 因为猪脑使用了很多while循环,无语,官方示例就很简单,思路一致。如下:

相关推荐
周圣贤2 小时前
九尾狐编程语言新算法“超维时空演算体”
开发语言·算法
军训猫猫头5 小时前
100.Complex[]同时储存实数和虚数两组double的数组 C#例子
算法·c#·信号处理
int型码农6 小时前
数据结构第八章(五)-外部排序和败者树
c语言·数据结构·算法·排序算法
好易学·数据结构6 小时前
可视化图解算法52:数据流中的中位数
数据结构·算法·leetcode·面试·力扣·笔试·牛客
dying_man6 小时前
LeetCode--35.搜索插入位置
算法·leetcode
点云SLAM7 小时前
PyTorch 中Tensor常用数据结构(int, list, numpy array等)互相转换和实战示例
数据结构·人工智能·pytorch·算法·list·numpy·tensor
Jo乔戈里9 小时前
计量经济学(复习/自用/未完)
算法
苦学LCP的小猪9 小时前
LeeCode94二叉树的中序遍历
数据结构·python·算法·leetcode
实习生小黄9 小时前
基于扫描算法获取psd图层轮廓
前端·javascript·算法
CYRUS_STUDIO10 小时前
破解 VMP+OLLVM 混淆:通过 Hook jstring 快速定位加密算法入口
android·算法·逆向