每日一题——移动零

news2024/10/7 14:24:39

移动零

题目链接

在这里插入图片描述


思路——双指针

如果可以开辟额外的空间,那这题十分好做。我们开辟和nums同样大小的空间,将遍历数组,将非零元素从头放置,将零从后往前放置,这样就可以将所有的零放到后面,同时保证非零元素的相对顺序。

如图,对于数组[1,0,0,4,1,2,0]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fWXVf2HJ-1692168399799)(C:\Users\HUASHUO\AppData\Roaming\Typora\typora-user-images\image-20230816140530417.png)]

但是这一题要求我们不能额外开辟空间,即要求我们的空间复杂度为O(1),那我们就要思考用双指针的方法了。

  • 我们定义指针left用来指向已经处理好的序列末尾,指针right指向还未处理好的序列开头
  • right向后开始遍历数组,当right指向非零元素时,就交换leftright指向的元素,同时left右移
  • 最终就可以得到答案

如图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4K1JXlTw-1692168399800)(C:\Users\HUASHUO\AppData\Roaming\Typora\typora-user-images\image-20230816142128208.png)]

实现代码

//由于形参的改变不影响实参,因此要实现真正的交换要传地址
void Swap(int *num1, int *num2) {
    int temp = *num1;
    *num1 = *num2;
    *num2 = temp;
}

void moveZeroes(int *nums, int numsSize) {
    int left = 0, right = 0;
    while (right < numsSize) {
        //right指向非零元素就交换right和left的数据,同时left右移
        if (nums[right]= 0)
        {
            Swap(nums + left, nums + right);
            left++;
        }
        
        //right向右遍历数组
        right++;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安全狗获批成为算网融合产业及标准推进委员会伙伴单位

近日&#xff0c;安全狗获批成为中国通信标准化协会算网融合产业及标准推进委员会伙伴单位。 据悉&#xff0c;中国通信标准化协会算网融合产业及标准推进委员会&#xff0c;致力于算网融合、数字化转型、SDN/NFV、SD-WAN、新基建、信息安全、边缘计算、高性能计算领域及典型应…

品牌营销|所有产品都值得用 AI 再做一遍

微软 CEO Satya Nadella 曾经说过&#xff1a;“所有的产品都值得用 AI 重做一遍。” AI 大模型的出现&#xff0c;开启了一个全新的智能化时代&#xff0c;重新定义了人机交互。这让生成式 AI 技术变得「触手可得」&#xff0c;也让各行业看到 AGI 驱动商业增长的更大可能性。…

基于注册中心如何实现全链路灰度

1. 为什么需要服务发现? 2. 微服务注册中心 3. 基于注册中心如何实现全链路灰度 4. GRPC 如何结合注册中心 GRPC服务发现与全链路灰度 为什么需要服务发现? 服务拆分 配置调用 如果有很多服务怎么办&#xff1f; 服务注册 服务发现 注册中心的架构 配置与使用 常见的…

西瓜书之神经网络

一&#xff0c;神经元模型 所谓神经网络&#xff0c; 目前用得最广泛的一个定义是“神经网络是由具有适应性的简单单元组成的广泛并行互连的网络&#xff0c;它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应”。 M-P神经元 M-P神经元&#xff1a;接收n个输入(…

存算分离实践:构建轻量、云中立的大数据平台

今天我们将分享社区用户多点 DMALL 的案例。多点 DMALL 是亚洲领先的全渠道数字零售解决方案服务商&#xff0c;目前已与 380 家零售企业达成合作&#xff0c;覆盖 6 个国家和地区。 面对 B 端客户日益增长的企业数据&#xff0c;存算一体的架构显得力不从心。计算资源冗余浪费…

CAS问题汇总

CAS的执行流程&#xff1f; CAS比较比替换的大致流程是这样的: 首先它有三个参数 &#xff1a; V 内存值 A 预期的旧值 B 新值比较V的值与A的值是否相等如果相等的话&#xff0c;则将V的值替换成B&#xff0c;否则就提示修改失败。 一般正常情况的话就是没有其他线程修改内存…

解决内网GitLab 社区版 15.11.13项目拉取失败

问题描述 GitLab 社区版 发布不久&#xff0c;搭建在内网拉取项目报错&#xff0c;可能提示 unable to access https://github.comxxxxxxxxxxx: Failed to connect to xxxxxxxxxxxxxGit clone error - Invalid argument error:14077438:SSL routines:SSL23_GET_S 15.11.13ht…

工业互联网产业联盟发布《2023可信工业数据流通应用案例集》

导读 随着新一代信息技术与制造业的深度融合发展&#xff0c;全球工业数据应用已经进入纵深发展的新阶段&#xff0c;数据作为新型生产要素和重要战略资源&#xff0c;正在制造业数字化转型过程中发挥出更大的作用。在这一进程中&#xff0c;工业数据的流通共享受到广泛关注。…

深入探索JavaEE单体架构、微服务架构与云原生架构

课程链接&#xff1a; 链接: https://pan.baidu.com/s/1xSI1ofwYXfqOchfwszCZnA?pwd4s99 提取码: 4s99 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v4的分享 课程介绍&#xff1a; &#x1f50d;【00】模块零&#xff1a;开营直播&a…

LeetCode集

目录 1、算法1.1 排序1.1.1 冒泡排序1.1.1.1 简单交换排序1.1.1.2 冒泡排序 1.1.2 简单选择排序1.1.3 直接插入排序1.1.4 希尔排序1.1.5 堆排序1.1.6 归并排序1.1.7 快速排序 1.1 位运算/二进制1.1.1 Java中的正数、负数1.1.2 Java中的位运算1.1.3 比特位计数1.1.4 2的幂1.1.5 …

【腾讯云Cloud Studio实战训练营】Cloud Studio + iPad,让代码之舞飞扬在指尖

Cloud Studio iPad&#xff0c;让代码之舞飞扬在指尖 妙手偶得&#xff0c;开启神奇之旅立即反馈&#xff0c;一切尽在掌握版本控制&#xff0c;简单易用MetaWork 协作&#xff0c;摸鱼变得不再轻松 ​一直以来&#xff0c;开发者大多都习惯在电脑端开发&#xff0c;而iPad只是…

Swift 基础

工程目录 请点击下面工程名称&#xff0c;跳转到代码的仓库页面&#xff0c;将工程 下载下来 Demo Code 里有详细的注释 点击下载代码&#xff1a;swift-01

windows 删除桌面右键菜单多余项

Step1&#xff1a;打开注册表 winr输入 regedit Step2&#xff1a;输入以下路径&#xff0c;跳转到相应位置 计算机\HKEY_CLASSES_ROOT\Directory\Background\shell 即可查看当前所有的右键选项&#xff0c;如下图所示 Step3&#xff1a;删除不需要的选项 直接删掉相应的文…

javaScript:数组检测

目录 一.前言 二.数组检测方法 1.every&#xff08;&#xff09; 2.some&#xff08;&#xff09; 3.filter&#xff08;&#xff09; 一.前言 数组检测是指在编程中对数组进行验证和检查的过程。数组检测可以涉及以下方面&#xff1a; 确定数组的存在&#xff1a;在使用数…

NLP中的RNN、Seq2Seq与attention注意力机制

目录 NLP自然语言处理 的RNN、Seq2Seq与attention注意力机制 RNN循环神经网络 前馈网络入门 前馈网络 循环网络 多层感知器架构示例 循环神经网络的运作原理 展开 RNN seq2seq模型 Attention&#xff08;注意力机制&#xff09; 总结 引用 NLP自然语言处理 的RNN、…

Vite更新依赖缓存失败,强制更新依赖缓存

使用vitets开发一段时间了&#xff0c;感觉并不是想象中的好用&#xff0c;特别是出现些稀奇古怪的问题不好解决&#xff0c;比如下面这个问题 上午9:50:08 [vite] error while updating dependencies: Error: ENOENT: no such file or directory, open E:/workspace-dir/node…

2023年备受欢迎的5款团队任务管理工具

任务管理是团队协作的重要环节&#xff0c;选择合适的团队任务管理软件可以提高工作效率、明确责任分工、加强沟通协作。在互联网领域&#xff0c;有许多好用的团队任务管理软件可供选择。下面介绍5款比较知名的团队任务管理软件&#xff0c;并从互联网场景的相关背景内容上进行…

懵了,面试官问我Redis怎么测,直接凉了...

前言 有些朋友来问我&#xff0c;redis要怎么测试&#xff1f;首先我们需要知道&#xff0c;redis是什么&#xff1f;它能做什么&#xff1f; redis是一个key-value类型的高速存储数据库。 redis常被用做&#xff1a;缓存、队列、发布订阅等。 所以&#xff0c;“redis要怎么测…

JavaEE初阶:多线程 - Thread 类的基本用法

上次我们了解了多线程的五种创建方法&#xff0c;今天来学习Thread的基本用法。 目录 run和start Thread常见的构造方法 Thread的几个常见属性 后台线程 是否存活 线程终止 1.使用标志位 2.使用Thread自带的标志 等待线程 run和start 首先需要理解Thread的run和star…

小程序商品如何设置指定的配送规则

小程序配送规则包括商品是否包邮、包邮金额、起总金额、计费方式、配送区域等&#xff0c;这些规则直接影响到商家的运营和用户的购物体验。下面将详细介绍如何给商品设置配送规则。 1. 添加配送规则。商家在配送设置->配送规则&#xff0c;添加配送规则。配送规则支持的功…