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

每日一题(LeetCode)----数组--移除元素(三)

每日一题(LeetCode)----数组–移除元素(三)

1.题目([283. 移动零](https://leetcode.cn/problems/sqrtx/))

给定一个数组 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

**进阶:**你能尽量减少完成的操作次数吗?

2.解题思路

思路一: 快速排序

选定0为标准值,不等于这个标准值的放在非零空间中,等于这个标准值放在得到的非零空间之后

实现步骤

1.我们先申请一个变量,用来记录不等于0的空间(非零空间)的最后一个元素下标(最开始是-1)

2.遍历原数组,如果遍历到的元素是0,那么我们把它放到非零空间的最后一个元素的后边,同时非零空间向右扩大一位

3.遍历完数组之后,我们返回这个非零空间的长度即可,非零空间的长度为非零空间最后一个元素下标+1

3.写出代码

思路一的代码:

class Solution {
public:void moveZeroes(vector<int>& nums) {int value=0;int index=-1;int length=nums.size();for(int i=0;i<length;i++){if(nums[i]!=0){int temp;temp= nums[index+1];nums[index+1]=nums[i];nums[i]=temp;index++;}}}
};
http://www.lryc.cn/news/219289.html

相关文章:

  • AI:57-基于机器学习的番茄叶部病害图像识别
  • 人工智能-深度学习计算:层和块
  • Linux第一个小程序进度条
  • JavaEE平台技术——预备知识(Maven、Docker)
  • 【ChatOCR】OCR+LLM定制化关键信息抽取(附开源大语言模型汇总整理)
  • 【位运算】XOR Construction—CF1895D
  • 解决Visual Studio Code 控制台中文乱码问题
  • React Native自学笔记
  • 程序员笔记本电脑选 windows 还是 MAC
  • 蓝桥杯每日一题2023.11.5
  • 多媒体应用设计师 2023年(含答案回忆版)
  • [Machine Learning][Part 8]神经网络的学习训练过程
  • Git 内容学习
  • Zookeeper3.7.1分布式安装部署
  • CSS必学:元素之间的空白与行内块的幽灵空白问题
  • C++类中对构造函数的重载
  • QtC++与QLabel详解
  • 090基于web+springboot的中小企业设备管理系统
  • input 调起键盘 ,键盘距离输入框底部太近
  • 前端深拷贝与浅拷贝的实现
  • 哆啦百宝箱APP
  • lv9 嵌入式开发 数据库sqlite
  • 「Verilog学习笔记」异步复位的串联T触发器
  • 什么是51单片机,,如何写代码,并且烧录?
  • Multer 实现文件上传功能
  • Excel·VBA工作表导出为图片
  • 【零基础抓包】Fiddler超详细教学(一)
  • 快速入手maven
  • Mysql Binlog日志
  • 高级深入--day45