LeetCode hot100-4

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。

我的解法可以通过,而且时间能打败99.98%的Java

思路就是找出有几个0。然后遍历数组,不是0的数就顺序往前放。再把最后几个位置全都赋值为0。

class Solution {public void moveZeroes(int[] nums) {int count = 0;for (int i = 0; i < nums.length; i++) {if (nums[i] == 0) {count++;}}int pos = 0;int nonZeroCount = nums.length - count;for (int j = 0; j < nums.length; j++) {if (nums[j] != 0) {nums[pos] = nums[j];pos++;}}for (int k = nonZeroCount; k < nums.length; k++) {nums[k] = 0;}}
}

官方解法
思路就是用两个指针,左指针保持指向第一个0,右指针往后寻找需要移动到0前面去的元素(如果前面没有0的话是自己和自己交换),找到了就交换,交换之后左右指针都应该往后移动一格。

class Solution {public void moveZeroes(int[] nums) {int n = nums.length, left = 0, right = 0;while (right < n) {if (nums[right] != 0) {swap(nums, left, right);left++;}right++;}}public void swap(int[] nums, int left, int right) {int temp = nums[left];nums[left] = nums[right];nums[right] = temp;}
}作者:力扣官方题解
链接:https://leetcode.cn/problems/move-zeroes/solutions/489622/yi-dong-ling-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从事测绘地信,你需要这些插件、软件、小工具、图源...

特别声明&#xff0c;本篇是来自公众号GIS前沿的资源&#xff0c;看着比较好&#xff0c;特别给大家推荐。加粗样式 今天&#xff0c;我们又来汇总了一些工作中实用的插件、小工具、数据等等&#xff0c;小助手又来帮你提高工作效率了****。 因为小助手每年都会总结一次&…

15.Django总结

文章目录 1.Django创建项目的命令2.MVC,MVT的理解3.Django中间件的使用4.WSGI,uWSGI服务器 和 uwsgi协议5.nginx和uWISG 服务器之间如何配合工作的6.django开发中数据库做过什么优化7.Python中三大框架各自的应用场景8.django如何提升性能(高并发)9. 什么是restful api谈谈你的…

Verilog宏、`include<要包含的路径/文件>

Verilog宏 Verilog对宏的定义如下&#xff1a; define TESTEQ1 4b1101 定义的宏稍后将被引用&#xff0c;如下所示&#xff1a; 如果&#xff08;请求TESTEQ1&#xff09; “ifdef”和“endif”构造执行以下操作&#xff1a; •确定是否定义了宏。 •定义条件编译。 如果定义了…

MySQL性能优化-数据库调优有哪些维度可以选择

数据库调优的目标 简单来说&#xff0c;数据库调优的目的就是要让数据库运行得更快&#xff0c;也就是说响应的时间更快&#xff0c;吞吐量更大。 不过随着用户量的不断增加&#xff0c;以及应用程序复杂度的提升&#xff0c;我们很难用“更快”去定义数据库调优的目标&#…

windows常用命令总结

Windows常用命令总结如下&#xff1a; 系统管理与维护&#xff1a; shutdown&#xff1a;用于关闭或重新启动计算机。例如&#xff0c;shutdown -s -t 60 表示60秒后关机&#xff0c;shutdown -r -t 60 表示60秒后重启。systeminfo&#xff1a;显示关于计算机及其操作系统的详细…

掘根宝典之C语言if,switch,break,continue,逻辑运算符(||,,!),?:运算符

if语句 C语言中的if语句用于执行给定条件下的一部分代码。 if语句的语法如下&#xff1a; if (condition) {// code to be executed if condition is true }在这里&#xff0c;condition是一个表达式&#xff0c;如果为真&#xff0c;则执行if语句块中的代码。如果条件为假&…

蓝桥集训之重新排序

蓝桥集训之重新排序 核心思想&#xff1a;差分 利用差分 在一段区间内 最终求和得到每个位置数计算的次数然后分别从大到小排序w[i]和s[i]数组 #include<iostream>#include<algorithm>using namespace std;typedef long long LL;const int N 100010;int w[N],s…

Python并发编程:协程-gevent模块

一 gevent模块 Gevent是一个第三方库&#xff0c;可以轻松通过gevent实现并发同步或异步编程。在gevent中用到的主要模式是Greenlet&#xff0c;它是以C扩展模块形式接入Python的轻量级协程。Greenlet 全部运行在主程序操作系统进程的内部&#xff0c;但它们被协作式地调度。 …

Stable Diffusion ———LDM、SD 1.0, 1.5, 2.0、SDXL、SDXL-Turbo等版本之间关系现原理详解

前言 2021年5月&#xff0c;OpenAI发表了《扩散模型超越GANs》的文章&#xff0c;标志着扩散模型&#xff08;Diffusion Models&#xff0c;DM&#xff09;在图像生成领域开始超越传统的GAN模型&#xff0c;进一步推动了DM的应用。 然而&#xff0c;早期的DM直接作用于像素空…

cmd模式下启动mysql

1.打开cmd输入services.msc&#xff0c;找到MYSQL&#xff0c;右击属性&#xff0c;找到可执行文件路径&#xff0c;加载到环境变量。 2.打开cmd&#xff0c;启动MYSQL&#xff1a;输入net start mysql; 3.登陆MYSQL&#xff0c;需要管理权限&#xff1b; 输入&#xff1a;my…

HALCON 快速入门手册

HALCON 快速入门手册 1 什么是 HALCON HALCON 是德国 MVtec 公司开发的一套完善的标准的机器视觉算法包&#xff0c;拥有应用广泛 的机器视觉集成开发环境。它节约了产品成本&#xff0c;缩短了软件开发周期——HALCON 灵活的 架构便于机器视觉&#xff0c;医学图像和图像分析应…

Docker容器化解决方案

什么是Docker&#xff1f; Docker是一个构建在LXC之上&#xff0c;基于进程容器的轻量级VM解决方案&#xff0c;实现了一种应用程序级别的资源隔离及配额。Docker起源于PaaS提供商dotCloud 基于go语言开发&#xff0c;遵从Apache2.0开源协议。 Docker 自开源后受到广泛的关注和…

数据链路层----滑动窗口协议的相关计算

目录 1.窗口大小的相关计算 •停等协议&#xff1a; •后退N帧协议&#xff1a; •选择重传协议&#xff1a; 2.信道利用率相关计算 •停等协议的信道利用率&#xff1a; •连续ARQ&#xff08;后退N帧协议&#xff0c;选择重传协议&#xff09;的信道利用率&#xff1a;…

工具函数模板题(蓝桥杯 C++ 代码 注解)

目录 一、Vector容器&#xff1a; 二、Queue队列 三、Map映射 四、题目&#xff08;快递分拣 vector&#xff09;&#xff1a; 代码&#xff1a; 五、题目&#xff08;CLZ银行问题 queue&#xff09;&#xff1a; 代码&#xff1a; 六、题目&#xff08;费里的语言 map&…

每日学习总结20240301

20240301 1. strchr VS strrchr strchr和strrchr是C语言标准库中的字符串处理函数&#xff0c;用于在字符串中查找特定字符的位置。 1.1 strchr函数 strchr函数用于在字符串中查找第一次出现指定字符的位置&#xff0c;并返回该位置的指针。函数原型如下&#xff1a; char…

你都了解2024程序员拿捏高薪的新方式吗?

2024年&#xff0c;程序员该如何拿高薪呢&#xff1f; 道理是这么讲&#xff0c;那我们到底应该如何去践行呢&#xff1f;以我自身的经验来看&#xff0c;网络接单无疑是我们程序员来钱最快的方式&#xff0c;既可以做到兼顾本职工作和快点搞钱&#xff0c;又可以充分利用好每一…

云解析的高防DNS技术有哪些优势和作用?(国科云)

云解析作为一种更加智能安全的解析技术&#xff0c;开始替代传统解析技术&#xff0c;受到越来越多政府机关和企业的关注和信赖。相比传统解析技术&#xff0c;云解析具备智能解析、健康监测、全局流量管理等技术优点&#xff0c;有效提升DNS解析的效率和精度&#xff0c;而其所…

rearrangement-challenge-2022环境使用学习(一)

搭建了rearrangement-challenge-2022的环境&#xff1a; https://github.com/facebookresearch/habitat-challenge/tree/rearrangement-challenge-2022 habitat最大的缺点是对不同的版本非常的敏感。本文只是针对rearrangement-challenge-2022的学习。 文档一开始会很不完善&a…

信息安全系列04-安全启动介绍

本文框架 1. 基本概念1.1 基本概念回顾1.2 数字签名及验签流程 2. 安全启动实施2.1 信任根选择2.1.1 使用HSM作为信任根2.1.2 使用最底层Bootloader作为信任根 2.2 校验方法确认2.2.1 基于非对称加密算法&#xff08;数字签名&#xff09;2.2.2 基于对称加密算法 2.3 安全启动方…

llvm AST consumer 示例

示例源码 Makefile LLVM_CONFIG ? llvm-config #CXX : clang ifndef VERBOSE QUIET : endifSRC_DIR ? $(PWD) LDFLAGS $(shell $(LLVM_CONFIG) --ldflags) COMMON_FLAGS -Wall -Wextra CXXFLAGS $(COMMON_FLAGS) $(shell $(LLVM_CONFIG) --cxxflags) LCXX :$(shell $(L…