leetcode刷题笔记--第283题

问题内容

描述:

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

示例:

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

说明:

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

解答方法

// 方法一(简短):

class Solution: def moveZeroes(self, nums): 
			"""
            :type nums: List[int]
            :rtype: void Do not return anything, modify nums in-place instead.
            """ 
            for j in range(nums.count(0)): 
            nums.remove(0) 
            nums.append(0)
            
//方法二(易读):
class Solution: def moveZeroes(self, nums): 
			"""
            :type nums: List[int]
            :rtype: void Do not return anything, modify nums in-place instead.
            """ 
	        temp = []
	        j = 0
	        for i,item in enumerate(nums):
	            if item != 0:
	                temp.append(item)
	            
	        c = len(temp)
	        
	        for i in range(c):
	            nums[i] = temp[i]
// 方法二(效率):

class Solution: def moveZeroes(self, nums): 
			"""
            :type nums: List[int]
            :rtype: void Do not return anything, modify nums in-place instead.
            """ 
 			j = 0 
 			for i, item in enumerate(nums): 
 				if item != 0: 
 					if i != j: 
 						nums[i], nums[j] = nums[j], nums[i] 
 						j += 1 
 					else:  
 						j += 1
 						            

参考文档

[1]:https://blog.csdn.net/qq_17550379/article/details/80475808

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值