当前位置:网站首页>leetcode 283:移动零
leetcode 283:移动零
2022-08-10 03:16:00 【Rolandxxx】
题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例:
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
自己的第一遍解法,for循环里参杂while,O(N2)的时间复杂度,耗时太多
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)==0 or len(nums)==1:
return nums
for i, num in enumerate(nums):
if nums[i] == 0:
cur = i
if cur == len(nums)-1:
return nums
while nums[cur+1]==0:
cur += 1
if cur == len(nums)-1:
return nums
tmp = nums[i]
nums[i] = nums[cur+1]
nums[cur+1] = tmp
return nums
优化解法:直接遍历一遍数组,碰到把不为0的值直接就按顺序放到数组index以0开始的对应位置上去,以此递增。
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
""" Do not return anything, modify nums in-place instead. """
index = 0
for num in nums:
if num != 0:
nums[index] = num
index += 1
for i in range(index,len(nums)):
nums[i]=0
边栏推荐
猜你喜欢

软件的生命周期(软件工程各阶段的工作)

Evaluation and Construction of Enterprise Network Security Capability from the Sliding Ruler Model

单体架构应用和分布式架构应用的区别

从8k到13k,我全靠这本《接口自动化测试——从入门到精通》

MongoDB 常用查询语句

Software life cycle (the work of each phase of software engineering)

元宇宙+NFT是“宝”还是“炒”

超全面的Android面试题汇总

如何让导电滑环信号更好

Classes and interfaces
随机推荐
netstat和ss命令区别
6 common plugin recommendations in Pycharm
js原型和原型链以及原型继承
Did not detect default resource location for test class xxxx
成功执行数字化转型的9个因素
YAPI使用
vue项目 npm run build 打包项目防止浏览器缓存
Camera partial update
小程序导航及导航传参
vite基础,vite中 `@`符号是不被支持,不用@符号,直接用层级(./,../等)
清洁环保的小型风电滑环基本介绍
NFG电商系统在元宇宙趋势下做什么?
uniapp 路由与页面跳转
Dijkstra求最短路
二维空间下的向量旋转
如何快速成为一名软件测试工程师?测试员月薪15k需要什么技术?
day17正则表达式作业
文本编辑器vim
matlab simulink response spectrum calculation
第三章 搜索与图论(二)