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

【二刷力扣】【力扣热题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.xdnf.cn/news/633511.html

相关文章:

  • 【排序算法】典型排序算法和python 实现
  • 如何使用HiveSQL实现2个字符串间的映射及排序
  • 【排序算法】典型排序算法 Java实现
  • 【排序算法】冒泡排序详解--附详细流程代码
  • CVE-2017-5645源码分析与漏洞复现(反序列化)
  • idea 快捷键大全
  • RabbitMQ核心机制——延迟队列
  • mysql:MVCC机制
  • 【Android】基于SurfaceControlViewHost实现跨进程渲染
  • 【GitHub Pages】部署指南
  • 微信小程序 --三剑客
  • 基于ICEEMDAN-SSA-BP的混合预测模型的完整实现过程
  • 人工智能数学基础实验(三):最小二乘法-数值计算
  • CSS布局(上):浮动基础
  • 使用Python,OpenCV,Tesseract-OCR对自己的运动数据图片进行识别及分析,并使用Matplotlib绘制配速图出来
  • Ubuntu 24.04部署安装Honeyd蜜罐
  • Go 语言基础 2 Func,流程控制
  • Kubernetes(k8s)全面解析:从入门到实践
  • how to do unit test for golang within vscode
  • CentOS 7.6 + Docker:搭建后端常用的开发环境
  • 使用CentOS部署本地DeekSeek
  • PDF 编辑批量拆分合并OCR 识别
  • 非常适合初学者的Golang教程
  • TDengine 对接微软 SSRS 报表系统
  • Go 语言学习 Protobuf 连接 gRPC 实现 AI 接口
  • Linux 的编辑器--vim
  • 初识消息队列
  • C++单例模式与线程安全
  • webpack面试问题
  • 理解HTTP基本认证与表单登录认证