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

力扣每日一题之移动零

题目说明:

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

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


思路分析:我们可以考虑使用双指针来解答该题。双指针分为对撞指针和快慢指针。我们通过分析发现,快慢指针不适合该题,而对撞指针刚好满足。我们可以在数组头放置一个指针,在数组末尾放置一个指针:当尾指针指向的元素不是0则与头指针交换元素,交换完后尾指针前进一步,头指针后退一步;若是0,则直接跳过这个0,前进一步。就这样一直循环,直到两指针相撞,退出循环。


代码实现

void Swap(int* a, int* b)
{int tmp = *a;*a = *b;*b = tmp;
}void moveZeroes(int* nums, int numsSize) {int min = 0;int max = 0;while (max < numsSize){if (nums[max] != 0){Swap(&nums[max], &nums[min]);min++;}max++;}
}

http://www.dtcms.com/a/189945.html

相关文章:

  • 【BUG】滴答定时器的时间片轮询与延时冲突
  • ChatPromptTemplate创建方式比较
  • Golang实践录:在go中使用curl实现https请求
  • 元宇宙赛道新势力:成都芯谷产业园创新业务如何重构产业格局
  • 量子计算实用化突破:从云端平台到国际竞合,开启算力革命新纪元
  • 查看字节真实二进制形式示例解析1
  • 【教程】Docker方式本地部署Overleaf
  • RHCE认证通过率
  • 建筑工程管理核心功能解析与2025年TOP5系统深度测评(附智能化转型必备工具对比)
  • WPF Datagrid 数据加载和性能
  • 内存虚拟盘(RAMDisk)是什么?
  • 构建优雅对象的艺术:Java 建造者模式的架构解析与工程实践
  • 【Linux Nano Vim快捷键大全】
  • [特殊字符] VMware虚拟机挂起后Docker容器MySQL无法连接的解决方案
  • BitMart合约交易体验 BitMart滑点全赔的底层逻辑
  • Soundness Gitpod 部署教程
  • MVCC:数据库并发控制的利器
  • 深度理解指针(2)
  • Redis的Pipeline和Lua脚本适用场景是什么?使用时需要注意什么?
  • 计算机组成与体系结构:缓存设计概述(Cache Design Overview)
  • Eslint和perrier的作用
  • contains方法的实现对比
  • leetcode二叉树相关题目复习(C语言版)
  • PDF Base64格式字符串转换为PDF文件临时文件
  • 具身智能梳理以及展望
  • 读入csv文件写入MySQL
  • 《AI大模型应知应会100篇》第64篇:构建你的第一个大模型 Chatbot
  • 鸿蒙OSUniApp 开发实时聊天页面的最佳实践与实现#三方框架 #Uniapp
  • FFmpeg 与 C++ 构建音视频处理全链路实战(五)—— 音视频编码与封装
  • 【MySQL 基础篇】深入解析MySQL逻辑架构与查询执行流程