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

(双指针)283. 移动零

题目

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

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

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

示例 2:
输入: nums = [0]
输出: [0]

提示:
1 <= nums.length <= 104
-231 <= nums[i] <= 231 - 1

思路

这个题目很熟悉,和基本排序算法中的快速排序很像,如果找到符合要求的,则交换

  • 快速排序的思想,快速排序首先要确定一个待分割的元素做中间点 x,然后把所有小于等于 x 的元素放到 x 的左边,大于 x 的元素放到其右边
  • 我们可以用 0 当做这个中间点,如此便可以实现题目要求

时间复杂度:O(n)
空间复杂度:O(1)

算法

class Solution {public void moveZeroes(int[] nums) {if(nums==null) {return;}//两个指针i和jint j = 0;for(int i=0;i<nums.length;i++) {//当前元素!=0,就把其交换到左边,等于0的交换到右边if(nums[i]!=0) {int tmp = nums[i];// 交换nums[i] = nums[j];// j先赋值给num,j再+1nums[j++] = tmp;}}}
}	
http://www.lqws.cn/news/483913.html

相关文章:

  • [踩坑] vmware 虚拟机卡片全灰, 开机没反应
  • 用 Python 绘制动态方块热力图:从数据到可视化的完美蜕变
  • 【51单片机】串口通信
  • 使用FastMCP开发MCP服务简单尝试
  • 云原生/容器相关概念记录
  • uni-app项目实战笔记20--触底加载更多样式的实现
  • PyTorch 入门学习笔记
  • margin-block-start定义元素在块级流方向起始边缘的外边距
  • 3516cv610在vi、vpss模块做延时优化
  • 【设计模式】策略模式 在java中的应用
  • 安卓jetpack compose学习笔记-Navigation基础学习
  • 使用css做出折叠导航栏的功能
  • 【appium】5. Appium WebDriver 支持的常用方法汇总
  • Flink源码阅读环境准备全攻略:搭建高效探索的基石
  • 基于Docker本地化搭建部署Dify
  • CSS Background 相关属性详解 文字镂空效果
  • springboot企业级项目开发之项目测试——集成测试!
  • Idea/Pycharm用法总结
  • 安卓官方版fat-aar:使用Fused Library将多个Android库发布为一个库
  • 机器学习:特征向量与数据维数概念
  • 从代码学习深度强化学习 - Actor-Critic 算法 PyTorch版
  • Ubuntu22.04.4 开启root帐号SSH登陆
  • [Linux] Vim编辑器 Linux输入输出重定向
  • 风险矩阵与灰色综合评价
  • 【Pytest 使用教程】
  • 15.3 LLaMA 3+LangChain实战:智能点餐Agent多轮对话设计落地,订单准确率提升90%!
  • 心法学习 - 苏格拉底式提问法
  • aws(学习笔记第四十六课) codepipeline-build-deploy
  • P99延迟:系统性能优化的关键指标
  • Python嵌套循环