问题描述:

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

示例:

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

说明:

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

方法1:检测到为0纪录0的个数,不为0时进行赋值运算nums[i - k] = nums[i]

    最后将检测到的0补到nums的最后

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

方法2:每次将元素等于0的位置变成[]。

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

将方法1改进:

 class Solution(object):
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
length = len(nums)
i = 0
n = 0
while i + n < length:
if nums[i] == 0:
n += 1
del nums[i]
else:
i += 1
nums += [0]*n

2018-09-23 09:07:49

最新文章

  1. 开放式管理基础结构 OMI
  2. jQuery操作Dom、jQuery事件机制、jQuery补充部分
  3. Servlet过滤器,Servlet过滤器创建和配置
  4. warning C4305: “=”: 从“int”到“unsigned char”截断解决方法[zz]
  5. nginx支持flv MP4 扩展nginx_mod_h264_streaming,nginx-rtmp-module-master,yamdi
  6. 安装Golang 1.6及开发环境
  7. HTTP协议和WEB应用
  8. 解决iOS中tabBarItem图片默认颜色的问题(指定代码渲染模式为以原样模式的方式显示出来)
  9. bat脚本-set(setlocal enabledelayedexpansion) 学习
  10. 剖析项目多个logback配置(下)
  11. 如何对tcp流认证并加密
  12. C语言缓冲区
  13. LeetCode算法题-Arranging Coins(Java实现)
  14. (转)EOS中账户、钱包和密钥的关系
  15. oracle开机自启,开机自动关闭防火墙,开机监听自启
  16. P2651 添加括号III
  17. Docker化高可用redis集群
  18. 10 jmeter之动态关联
  19. AndroidPn推送测试
  20. python 随机选择字符串中的一个字符

热门文章

  1. Git Add,Git别名等
  2. Eclipse中在xml文件中,ctrl+左键的快捷键,点击class定位,不生效
  3. topcoder srm 710 div1 -23
  4. Python3基础 dict clear 清空一个字典
  5. 【POJ1509】Glass Beads
  6. (转)tomcat架构&amp;session共享
  7. How to Install Apache Tomcat 8.5 on CentOS 7.3
  8. LuoguP2398 GCD SUM
  9. SalGAN: Visual saliency prediction with generative adversarial networks
  10. POJ 3126 Prime Path(素数路径)