当前位置: 首页 > news >正文

python每日一题——4移动0

题目

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

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:

输入: nums = [0]
输出: [0]

答案

这道题可以使用双指针的方法解决,一个指针用来遍历数组,一个指针用来记录0的末尾位置。

具体步骤如下:

定义两个指针,一个指向当前遍历的位置,一个指向0的末尾位置。
遍历数组,如果当前元素为0,则将其移动到0的末尾位置,并将0的末尾位置指针向前移动一位。
如果当前元素不为0,则将其移动到当前位置,并将当前位置指针向前移动一位。
重复上述步骤,直到遍历完整个数组。
代码如下:

def moveZeroes(nums):  if not nums:  return []  left = 0  # 当前遍历位置指针  right = 0  # 0的末尾位置指针  n = len(nums)  while left < n:  if nums[left] == 0:  nums[left], nums[right] = nums[right], nums[left]  right += 1  else:  nums[left] = nums[left] + 1  # 非零元素加上一个非零值,保证相对顺序不变  left += 1  return nums

时间复杂度为O(n),空间复杂度为O(1)。

http://www.lryc.cn/news/242156.html

相关文章:

  • CAN实验
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • 微服务实战系列之Nginx
  • 使用rsync从OpenShift的pod复制文件
  • 解决Activiti5.22流程图部署在Windows上正常,但在linux上部署后出现中文变方块的问题
  • EMG肌肉电信号处理合集(三)
  • GitHub桌面版
  • 【广州华锐互动】昆虫3D虚拟动态展示:探索神奇的微观世界
  • 《QT从基础到进阶·三十六》QWidget实现收缩栏的效果
  • 运行软件报错找不到vcruntime140.dll无法继续执行代码怎么办-6个解决方法
  • 从Discord的做法中学习 — 使用Golang进行请求合并
  • 【教3妹学编程-算法题】统计和小于目标的下标对数目
  • OSG粒子系统与阴影-雾效模拟(1)
  • Windows power shell for循环
  • GIT实践与常用命令---回退
  • Python-Django的“日志功能-日志模块(logging模块)-日志输出”的功能详解
  • C现代方法(第23章)笔记——库对数值和字符数据的支持
  • NSGA-II求解微电网多目标优化调度(MATLAB)
  • 7-9 jmu-python-班级人员信息统计
  • Doris分区与分桶(八)
  • mac VScode 添加PHP debug
  • 53.最大子数组和
  • 455.分发饼干
  • 浏览器缓存控制讲解
  • 批量插入SQL 错误 [933] [42000]: ORA-00933: SQL 命令未正确结束
  • 北京数字孪生赋能工业制造,加速推进制造业数字化转型
  • 【NLP】GPT 模型如何工作
  • Linux下安装Foldseek并从蛋白质的PDB结构中获取 3Di Token 和 3Di Embedding
  • 单元测试-java.lang.NullPointerException
  • 机器学习数据集整理:图像、表格