leetcode hot100题(持续更新)移动零(双指针)

1.题目

思路:双指针

分析:

指针1:遍历数组,从数组最开头遍历到结尾,目的是找出非0元素

指针2:开始指向数组最开头元素,每当指针1找到一个非0元素,就把这个元素安排到指针2对应位置上,同时指针2指向数组下一个位置。

指针2目的,给数组换血,让数组非0元素放到前面。

用count记录指针2位置,其实也可以表示数组中非0元素个数

当指针1遍历到数组末尾相当于非0元素找完了,此时用数组元素个数减去非0元素个数就是0元素个数

那么有几个0就在换血后的数组从后往前补几个就好

代码

cpp 复制代码
class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int count=0;
        for(int i=0;i<nums.size();i++){
            if(nums[i]!=0){
                nums[count]=nums[i];
                count++;
            }
        }
        for(int i=count;i<nums.size();i++){
            nums[i]=0;
        }
    }
};
相关推荐
AndrewHZ4 小时前
【LLM技术全景】RAG 从原理到实战——检索增强生成完整指南
人工智能·深度学习·算法·llm·检索增强·生成式模型·rag
LuminousCPP4 小时前
单链表专题(三)-刷题复盘篇:从快慢指针到环形链表 II 数学推导
数据结构·经验分享·笔记·学习·算法·链表
-dzk-4 小时前
【贪心算法】LC 121.买卖股票的最佳时机
算法·贪心算法
hanlin034 小时前
动态规划专练:力扣第718、1143题
算法·leetcode·动态规划
ChaoZiLL4 小时前
二叉树经典例题
数据结构·算法
不正经学生4 小时前
C语言字符串函数进阶:安全版函数 + 错误处理 + 子串查找
c语言·开发语言·c++·算法·面试
Dr.kangder4 小时前
嵌入式面试总结(十四)——中断处理
单片机·面试·职场和发展·架构·硬件架构·嵌入式
三克的油5 小时前
算法基础-1
数据结构·c++·算法
oort1235 小时前
OortCodex 是奥尔特云 OortCloudSmart 推出的国产化工程化 AI 编码 Agent(奥尔特云编码智能体)
大数据·人工智能·算法