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

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

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

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

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

示例 1:

c++ 复制代码
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

c++ 复制代码
输入: nums = [0]
输出: [0]

提示:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

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

2.解题思路

思路一: 快速排序

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

实现步骤

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

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

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

3.写出代码

思路一的代码:

c++ 复制代码
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++;
            }
        }
    }
};
相关推荐
We་ct15 分钟前
LeetCode 4. 寻找两个正序数组的中位数:二分优化思路详解
前端·数据结构·算法·leetcode·typescript·二分
仍然.42 分钟前
算法题目---位运算
算法
计算机安禾1 小时前
【数据结构与算法】第10篇:项目实战:学生信息管理系统(线性表版)
开发语言·数据结构·算法·visual studio
q_35488851531 小时前
计算机毕业设计:汽车数据可视化与智能分析平台 Django框架 Scrapy爬虫 可视化 车辆 懂车帝大数据 数据分析 机器学习(建议收藏)✅
算法·信息可视化·django·flask·汽车·课程设计·美食
FakeOccupational1 小时前
【电路笔记 通信】IEEE 1588精密时间协议(PTP):数学假设+时间同步链路建模+消除主从偏差算法
笔记·算法
客卿1231 小时前
最小生成树(贪心)--构造回文串(字符串 + 回文判断 + 构造)
java·开发语言·算法
88号技师1 小时前
2026年3月中科院一区SCI-赏金猎人优化算法Bounty Hunter Optimizer-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
再卷也是菜1 小时前
算法基础篇(12)Trie树
算法·字典树
小糯米6012 小时前
C++ 单调栈原理与模板
开发语言·c++·算法
常利兵2 小时前
Android 集合探秘:ArrayMap 与 SparseArray 的奇妙之旅
android·算法·哈希算法