鱼C论坛

 找回密码
 立即注册
查看: 1186|回复: 6

[技术交流] 【朱迪的LeetCode刷题笔记】】283. Move Zeroes #Easy #Python

[复制链接]
发表于 2023-6-5 10:12:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Judie 于 2023-6-4 21:33 编辑

Given an integer array nums, move all 0's to the end of it while maintaining the relative order of the non-zero elements.

Note that you must do this in-place without making a copy of the array.

Example 1:
Input: nums = [0,1,0,3,12]
Output: [1,3,12,0,0]

Example 2:
Input: nums = [0]
Output: [0]

Constraints:
1 <= nums.length <= 104
-231 <= nums[i] <= 231 - 1

Follow up:
Could you minimize the total number of operations done?

Judy
Python beats 28.67%
class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        x = nums.count(0)
        for i in range(x):
            nums.remove(0)
        nums.extend([0] * x)
Python beats 18.76%
class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        for x in nums:
            if x == 0:
                nums.remove(0)
                nums.append(0)

Sol1
Python beats 76.93%
class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        count=nums.count(0)
        nums[:]=[i for i in nums if i != 0]
        nums+=[0]*count
                

Sol2
Python beats 59.6% #TwoPointers
class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        slow = 0
        for fast in range(len(nums)):
            if nums[fast] != 0 and nums[slow] == 0:
                nums[slow], nums[fast] = nums[fast], nums[slow]

            # wait while we find a non-zero element to
            # swap with you
            if nums[slow] != 0:
                slow += 1

Sol3
Python beats 87.64% (better than Sol2!) #TwoPointers
class Solution(object):
    def moveZeroes(self, nums):
        n = len(nums)
        i = 0
        for j in range(n):
            if (nums[j] != 0):
                nums[i], nums[j] = nums[j], nums[i]
                i += 1

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-7 08:05:29 | 显示全部楼层
我写过这题hh
class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        n = len(nums)
        i = 0
        j = 0
        while j < n:
            if nums[j] != 0:
                nums[i] , nums[j] = nums[j] , nums[i]
                i += 1
            j += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-7 08:10:11 | 显示全部楼层
还有这个,这是我第一次写的,投机取巧了,上面那个是看了答案有双指针再去写的
class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        a = nums.count(0)
        for i in range(a):
            nums.remove(0)
            nums.append(0)
001.png

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-7 21:43:36 | 显示全部楼层
yinda_peng 发表于 2023-6-6 19:10
还有这个,这是我第一次写的,投机取巧了,上面那个是看了答案有双指针再去写的

hhhh 我也这么写了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-7 21:47:29 | 显示全部楼层

这个你可以展开讲讲吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-8 08:52:24 | 显示全部楼层
Judie 发表于 2023-6-7 21:47
这个你可以展开讲讲吗

差不多就是跟答案那个双指针一样的,i表示当前已经处理好的非0元素的最后一位,j表示当前处理到的位置。如果nums[j]不等于0,就将其交换到nums[i]的位置上,然后i向后移动一位,继续处理下一个元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-8 20:50:44 | 显示全部楼层
yinda_peng 发表于 2023-6-7 19:52
差不多就是跟答案那个双指针一样的,i表示当前已经处理好的非0元素的最后一位,j表示当前处理到的位置。 ...

噢噢噢噢 明白了 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 05:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表