前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode每日一题:283. 移动零

leetcode每日一题:283. 移动零

作者头像
用户3578099
发布2020-11-30 10:22:08
3090
发布2020-11-30 10:22:08
举报
文章被收录于专栏:AI科技时讯AI科技时讯

地址:https://leetcode-cn.com/problems/move-zeroes/


给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:

输入: [0,1,0,3,12]

输出: [1,3,12,0,0]

说明:

必须在原数组上操作,不能拷贝额外的数组。

尽量减少操作次数。

思路:

示意图:

思路:

方法一:内置函数,移除零元素,然后再append

方法二:快排思想,零元素与非零元素进行交换

方法三:类似于双指针方式, 往左拉非零元素,剩余的位置置0

代码语言:javascript
复制
class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        if nums is None or len(nums) < 1:
            return []
        length = len(nums)
        # 借助于内置函数,删除后再在后面添加
        '''
        for i in range(length):
            if nums[i] == 0:
                nums.remove(nums[i])
                nums.append(0)
        return nums 
        '''
        # 类似于快排,零元素与非零元素交换
        '''
        j = 0
        for i in range(length):
            if nums[i]:
                nums[j], nums[i] = nums[i], nums[j]
                j += 1
        return nums 
        '''
        # 双指针法
        j = 0
        for i in range(length):
            if nums[i]:
                nums[j] = nums[i]  # 往左拉
                j += 1
        # 非0元素统计完了,剩下的都是0了
        for i in range(j, length):
            nums[i] = 0
        return nums
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技时讯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档