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

【蓝桥杯】每天一题,理解逻辑(1/90)【Leetcode 移动零】

文章目录

  • 题目解析
  • 讲解算法原理
    • 【双指针算法思路】
    • (数组下标充当指针)
    • 如何划分和执行
    • 过程大致
  • 代码详情

题目解析

在这里插入图片描述
题目链接:https://leetcode.cn/problems/move-zeroes/description/

  1. 题目意思解析
  • 把所有的零移动到数组的末尾
  • 保持非零元素的相对顺序
    理解了这两层的含义,这道题也就完成一半了。

讲解算法原理

解题思路:
题目归类数组划分:将一个数组划分成若干个区间
在这里插入图片描述

解题方法:

【双指针算法思路】

(数组下标充当指针)

在这里插入图片描述

定义两个指针:dest,cur。

  • cur:从左往右扫描数组
  • dest:已处理区间内,非零元素的最后一个一个位置
    作用:两个指针可以划分成三个区间
  • (0,dest) :非0区间
  • (dest+1,cur-1):0区间
  • (cur,n-1):待处理区间

如何划分和执行

  • cur初始化0,dest初始化-1

  • cur从左向右遍历,遇到0元素不做处理,遇到非0元素时,让dest+1,然后非零元素与dest所指元素进行交换(将非零元素直接归类到【0,dest】)
    ![[Pasted image 20250225103906.png]]

  • cur遍历到n-1时,结束

过程大致

![[Pasted image 20250225104208.png]]

联想思想:快排

  • cur指针先行遍历寻找非零元素
    • 零元素:不做处理,往后遍历
    • 非零元素:让dest++,然后dest所指向元素和cur元素进行交换
  • 当cur遍历到数组末尾时候,结束。

代码详情

  • C
`void swap(int*nums,int a,int b)
{
    int tmp=0;
    tmp=nums[a];
    nums[a]=nums[b];
    nums[b]=tmp;
}
void moveZeroes(int* nums, int numsSize) {
    int n=numsSize;
    int dest=-1;
    for(int cur=0;cur<numsSize;cur++)
    {
        if(nums[cur])
        {
            swap(nums,dest+1,cur);
            dest++;
        }
    }
    
}`
  • C++
`class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        for(int cur=0,dest=-1;cur<nums.size();cur++)
        {
            if(nums[cur])
            {
                swap(nums[++dest],nums[cur]);
            }
        }
        
    }
}

相关文章:

  • 【错误记录】Arrays.asList 的坑
  • 安装react报错
  • Vue 中,使用模板(Template) 和 Render 函数编写组件的区别
  • 数据存储:一文掌握RabbitMQ的详细使用
  • nginx 搭建 IPv6 -> IPv4 反向代理服务器
  • Python网络安全脚本
  • python生成的exe文件防止反编译(pyinstaller加密)
  • synchronized 底层实现原理
  • 【Java项目】基于Spring Boot的体质测试数据分析及可视化设计
  • 学习笔记05——HashMap实现原理及源码解析(JDK8)
  • vscode java环境中文乱码的问题
  • 本地AI可视化集成工具-开源的AnythingLLM
  • 每日一题——两数之和
  • OpenHarmony DFX子系统
  • 【组态PLC】基于三菱西门子S7-200PLC和组态王液料混合系统组态设计【含PLC组态源码 M016期】
  • DeepSeek R1满血+火山引擎详细教程
  • PyTorch 源码学习:GPU 内存管理之深入分析 CUDACachingAllocator
  • PINN求解固体力学问题——论文加代码
  • php 对接mqtt 完整版本,订阅消息,发送消息
  • vue实现根据点击或滑动展示对应高亮
  • 五一“大车流”来了,今日午后G40沪陕高速开始迎来出沪高峰
  • 国台办:提醒相关人员不要假借去第三地名义绕道赴台
  • 笔墨如何“构城”?上海美院城市山水晋京展出
  • 现场聆听总书记讲话,“00后”博士和大模型CEO都“热血沸腾”
  • ​关键词看中国经济“一季报”:韧,长期向好看底气
  • 财政部农业农村司司长吴奇修接受纪律审查和监察调查