zoukankan      html  css  js  c++  java
  • LeetCode(283. 移动零)

    问题描述

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

    示例:

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

    说明:

    1. 必须在原数组上操作,不能拷贝额外的数组。
    2. 尽量减少操作次数。

    解决方案

    1.最快的原地置换

    class Solution:
        def moveZeroes(self, nums):
            """
            :type nums: List[int]
            :rtype: void Do not return anything, modify nums in-place instead.
            """
            zero = 0
            for i in range(len(nums)):
                if not nums[i] == 0 and zero <= i:
                    nums[i], nums[zero] = nums[zero], nums[i]
                    zero += 1
    

    2.使用remove+append

    class Solution:
        def moveZeroes(self, nums):
            """
            :type nums: List[int]
            :rtype: void Do not return anything, modify nums in-place instead.
            """
            count = 0
            while 0 in nums:
                nums.remove(0)
                count+=1
            for i in range(count):
                nums.append(0)
    

    3.先覆盖,再写入0

    class Solution:
        def moveZeroes(self, nums):
            """
            :type nums: List[int]
            :rtype: void Do not return anything, modify nums in-place instead.
            """
            count = 0
            for i in range(0, len(nums)):
                if (nums[i] != 0):
                    nums[count] = nums[i]
                    count += 1
            for j in range(count, len(nums)):
                nums[j] = 0
            
    
  • 相关阅读:
    第二次团队作业
    第一次团队作业
    软件工程结对编程第二次作业
    第四次软件工程作业
    Hadoop综合大作业
    hive基本操作与应用
    熟悉HBase基本操作
    爬虫大作业(爬取广州番禺职业技术学院新闻发布方)
    熟悉常用的HDFS操作
    数据结构化与保存
  • 原文地址:https://www.cnblogs.com/huang-yc/p/10306676.html
Copyright © 2011-2022 走看看