【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循环,无语,官方示例就很简单,思路一致。如下:

相关推荐
田梓燊7 分钟前
leetcode 234
算法·leetcode·职场和发展
Aaron158810 分钟前
RFSOC+VU13P中在线部分可重构技术的应用分析
人工智能·算法·matlab·fpga开发·重构·信息与通信·信号处理
yashuk16 分钟前
C语言入门教程:程序结构与算法举例
c语言·算法·教程·程序设计·开发过程
橙露19 分钟前
后端开发面试:高频项目经验描述模板(可直接背)
面试·职场和发展
zsc_11820 分钟前
pvz3解码小游戏求解算法 (二)
算法
hanbr28 分钟前
每日一题day1(Leetcode 76最小覆盖子串)
算法·leetcode
AI科技星29 分钟前
张祥前统一场论中两个电荷定义的统一性解析
开发语言·线性代数·算法·数学建模·平面
代码地平线30 分钟前
C语言实现堆与堆排序详解:从零手写到TopK算法及时间复杂度证明
c语言·开发语言·算法
小江的记录本30 分钟前
【大语言模型】大语言模型——核心概念(预训练、SFT监督微调、RLHF/RLAIF对齐、Token、Embedding、上下文窗口)
java·人工智能·后端·python·算法·语言模型·自然语言处理
炘爚32 分钟前
LeetCode(两两交换链表中的节点)
算法·leetcode·链表