【二刷力扣】【力扣热题100】今天的题目是: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

解答:

思路:

首先我想到的就是swap进行交换,因为数组元素的顺序不能改变,只能让零移动全部到后面。

换个想法,其实就是想让非零元素全部按原来的顺序全部排列在数组前,那么就可以直接一个for循环遍历,只要是非零元素就进行swap,遍历一遍就会将非零元素置换到前面。

元素是零,就会用res标记下标,与下一个非零元素进行swap,这样遍历一遍,零元素会慢慢全部排序在后面,非零元素排列在前面。

代码如下:

class Solution {
public:void moveZeroes(vector<int>& nums) {int res=0;for(auto & it : nums){if(it!=0){          //如果数组中,当前元素不为0,就和后一个元素交换swap(it,nums[res]);res++;}}}
};
// 0 1 0 3 12 res=0 
// 1 0 0 3 12 res=1 
// 1 3 0 0 12 res=2 
// 1 3 0 0 12 res=3 
// 1 3 12 0 0 res=4 

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

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

相关文章

机器学习中的多GPU训练模式

文章目录 一、数据并行&#xff08;Data Parallelism&#xff09;二、模型并行&#xff08;Model Parallelism&#xff09;1. 模型并行2. 张量并行&#xff08;Tensor Parallelism&#xff09; 三、流水线并行&#xff08;Pipeline Parallelism&#xff09;四、混合并行&#x…

《JavaScript 性能优化:从原理到实战的全面指南》

《JavaScript 性能优化&#xff1a;从原理到实战的全面指南》 一、JavaScript 性能优化基础理论 在深入探讨 JavaScript 性能优化技术之前&#xff0c;我们需要明白JavaScript 的执行机制和性能瓶颈产生的根本原因。JavaScript 是一种单线程、非阻塞的脚本语言&#xff0c;其…

选择合适的Azure数据库监控工具

Azure云为组织提供了众多服务&#xff0c;使其能够无缝运行应用程序、Web服务和服务器部署&#xff0c;其中包括云端数据库部署。Azure数据库能够与云应用程序实现无缝集成&#xff0c;具备可靠、易扩展和易管理的特性&#xff0c;不仅能提升数据库可用性与性能&#xff0c;同时…

9.4在 VS Code 中配置 Maven

在 VS Code 中配置 Maven 需要完成 Maven 环境安装 一、安装 Maven&#xff08;如果未安装&#xff09; 下载 Maven 访问 Apache Maven 官网&#xff0c;下载最新版本的 Maven&#xff08;如apache-maven-3.9.9-bin.zip&#xff09;。 解压文件 将下载的 ZIP 文件解压到本地目…

影刀自动化流程复用技巧:流程复用

草莓时刻会创建一个新的空白流程。但是很多时候需要复用过往基础流程&#xff0c;在此基础上进行修改即可。而而不是重新创建基础流程。 为了解决这个问题&#xff0c;我们需要了解一下影刀流程的基础结构。 影刀流程基础结构概览 影刀自动化流程的基础结构主要包括几个关键组…

理论篇六:如何在Webpack中实现持久化缓存?

在 Webpack 中实现持久化缓存可以显著提升构建速度,尤其是在大型项目中。以下是 7 种核心策略 及其详细配置方法: 一、文件哈希命名(Content Hash) 确保文件内容变化时哈希值才改变,利用浏览器缓存。 // webpack.config.js output: {filename: [name].[contenthash:8].j…

C++单例模式与线程安全

C单例模式的线程安全实践与优化-CSDN博客 https://www.zhihu.com/question/56527586/answer/2344903391 C11中的单例模式 在C11及更高版本中&#xff0c;可以使用std::call_once和std::once_flag来确保单例实例的线程安全初始化。这种方法不需要显式地使用互斥锁&#xff0c…

UE5 图片导入,拖到UI上变色

UE5会自动把蓝色的图片当成法线贴图处理&#xff0c;非常傻逼 双击出问题的图片&#xff0c;右侧面板将压缩设置从法线改回默认

服务器安装xfce桌面环境并通过浏览器操控

最近需要运行某个浏览器的脚本&#xff0c;但是服务器没有桌面环境&#xff0c;无法使用&#xff0c;遂找到了KasmVNC&#xff0c;并配合xfce实现低占用的桌面环境&#xff0c;可以直接使用浏览器进行操作 本文基于雨云——新一代云服务提供商的Debian11服务器操作&#xff0c;…

Python函数全面解析:从基础到高级特性

文章目录 Python函数全面解析&#xff1a;从基础到高级特性一、函数基础概念1. 什么是函数&#xff1f;2. 函数的组成部分 二、函数的参数传递1. 参数类型对比2. 参数传递示例 三、函数的作用域作用域示例global和nonlocal关键字 四、函数的属性和方法1. 函数的特殊属性2. 函数…

Ubuntu20.04的安装(VMware)

1.Ubuntu20.04.iso文件下载 下载网址&#xff1a;ubuntu-releases-20.04安装包下载_开源镜像站-阿里云 2.创建虚拟环境 2.1打开VMware与创建新虚拟机 点击创建新虚拟机 如果没下好可以点击稍后安装操作系统 选择linux版本选择Ubuntu 64位然后点击下一步。 注意这里需要选择一…

Kafka 的日志清理策略:delete 和 compact

Kafka delete 日志清理策略&#xff08;日志删除&#xff09; 原理&#xff1a;按照一定保留策略&#xff0c;直接删除不符合条件的日志分段。Kafka 把 topic 的一个 partition 大文件分成多个小文件段&#xff0c;通过这种方式&#xff0c;能方便地定期清除或删除已消费完的文…

Go语言中常量的命名规则详解

1. 常量的基本命名规则 1.1. 命名格式 1. 使用const关键字声明&#xff1b; 2. 命名格式&#xff1a;const 常量名 [类型] 值&#xff1b; 3. 类型可以省略&#xff0c;由编译器推断&#xff1b; 1.2. 命名风格 大小写规则&#xff1a; 1. 首字母大写&#xff1a;导出常…

22、web场景-web开发简介

22、web场景-web开发简介 Web开发是指创建和维护在互联网上运行的网站和应用程序的过程。它涉及多个技术领域&#xff0c;包括前端开发、后端开发和数据库管理&#xff0c;共同实现网站的功能和用户体验。 ### 一、Web开发的基本概念 #### 1. **Web应用程序** - **狭义上**&am…

Structured Query Language(SQL)它到底是什么?

Structured Query Language&#xff08;SQL&#xff09; 的中文意思是 “结构化查询语言”&#xff0c;它是一种专门用于管理和操作关系型数据库的标准化编程语言。以下是其核心含义和用途的总结&#xff1a; 1. 核心功能 定义数据&#xff1a;创建、修改数据库结构&#xff08…

ubuntu22.04上运行opentcs6.4版本

1、下载github上的源码&#xff1a; openTCS - Downloads 2、安装java21 我的版本是&#xff1a;java --version java 21.0.6 2025-01-21 LTS Java(TM) SE Runtime Environment (build 21.0.68-LTS-188) Java HotSpot(TM) 64-Bit Server VM (build 21.0.68-LTS-188, mixed mo…

游戏引擎学习第307天:排序组可视化

简短谈谈直播编程的一些好处。 上次结束后&#xff0c;很多人都指出代码中存在一个拼写错误&#xff0c;因此这次我们一开始就知道有一个 bug 等待修复&#xff0c;省去了调试寻找错误的时间。 今天的任务就是修复这个已知 bug&#xff0c;然后继续排查其他潜在的问题。如果短…

基于PyTorch的残差网络图像分类实现指南

以下是一份超过6000字的详细技术文档&#xff0c;介绍如何在Python环境下使用PyTorch框架实现ResNet进行图像分类任务&#xff0c;并部署在服务器环境运行。内容包含完整代码实现、原理分析和工程实践细节。 基于PyTorch的残差网络图像分类实现指南 目录 残差网络理论基础服务…

(27)运动目标检测 之 分类(如YOLO) 数据集自动划分

(27)运动目标检测 之 分类(如YOLO) 数据集自动划分 目标检测场景下有时也会遇到分类需求,比如车牌识别、颜色识别等等本文以手写数字数据集为例,讲述如何将 0~9 10个类别的数据集自动划分,支持调整划分比例手写数字数据集及Python实现代码可在此直接下载:https://downloa…

Ubuntu安装1Panel可视化管理服务器及青龙面板及其依赖安装教程

Ubuntu安装1Panel可视化管理服务器及青龙面板及其依赖安装教程 前言一、准备工作二、操作步骤1、1Panel安装2、青龙面板安装3、青龙面板依赖安装 前言 1Panel 是一款现代化的开源 Linux 服务器管理面板&#xff0c;专注于简化服务器运维操作&#xff0c;提供可视化界面管理 Web…