【C++LeetCode】【热题100】移动零【简单】-不同效率的题解【4】

news2024/11/28 10:52:49

题目:
在这里插入图片描述
在这里插入图片描述

暴力方法:
在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int counts=0;//零的数量
        int swapCounts=0;
        for(int i=0;i<nums.size();i++){
            if(nums[i]==0){
                counts+=1;
            }
        }
        swapCounts=counts;
        for(int i=0;i<nums.size();i++){
            for(int j=nums.size()-1;j>i;j--){
                if(nums[i]==0 && swapCounts>0 &&nums[j]!=0){
                    for(int k=i+1;k<=j;k++){//保持顺序移动
                        nums[k-1]=nums[k];
                    }
                    nums[j]=0;
                    swapCounts--;
                    i--;//防止零漏掉
                    break;
                }
            }
        }
        //非零部分进行排序  保持非零元素的相对顺序 
        //std::sort(nums.begin(),nums.end()-counts);

    }
};

优化方法一:
在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int counts=0;//零的数量
        int swapCounts=0;
        for(int i=0;i<nums.size();i++){
            if(nums[i]==0){
                counts+=1;
            }
        }
        swapCounts=counts;
        int i=0,j=nums.size()-1;
        while(i>=0 && j <=nums.size()-1 && i<j){//i j 双指针
            if(nums[i]!=0){
                i++;
            }
            if(nums[j]==0){
                j--;
            }
            if(nums[i]==0 && swapCounts>0 &&nums[j]!=0 &&i<j){
                for(int k=i+1;k<=j;k++){//保持顺序移动
                    nums[k-1]=nums[k];
                }
                nums[j]=0;
                swapCounts--;
                if(swapCounts==0){
                    break;
                }
                
            }

        }
        //非零部分进行排序  保持非零元素的相对顺序 
        //std::sort(nums.begin(),nums.end()-counts);

    }
};

优化方法二:

在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int n=nums.size(),left=0,right=0;
        while(right<n){//left指向 已完成 限制条件 的 结尾,right 指向 为遍历 序列的开始
            if(nums[right]){//非零交换
                swap(nums[left],nums[right]);
                left++;
            }   
            right++;//依次遍历完 为遍历的序列
        }
    }
};

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

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

相关文章

DSP应用市场的大蛋糕,国产厂商能吃下多少?

DSP是数字信号处理器&#xff08;Digital Signal Processor&#xff09;的简称&#xff0c;是一种专门用于高速数学运算的微处理器。DSP能够快速且准确地处理数字信号&#xff0c;同时具备可编程和低功耗等特点&#xff0c;如今在各个领域发挥着越来越重要的作用。 &#xff08…

基于STM32和人工智能的智能仓储管理系统

目录 引言环境准备智能仓储管理系统基础代码实现&#xff1a;实现智能仓储管理系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景&#xff1a;智能仓储管理与优化问题解决方案与优化收尾与总结 1. 引言 智能仓储管理系统通过结合STM32嵌…

阿里巴巴橙点同学达摩院认证证书

网址&#xff1a;https://orange-class.com/ 为竞争激烈的职业做好充分的准备&#xff0c;无需相关经验立即开始学习。 阿里达摩院组织背书认证。 内容包括八个职业方向&#xff0c;涉及AI、开发、营销、设计等不同岗位&#xff1a; 其中&#xff0c;AI的高级认证情况如下&…

游戏开发丨基于Tkinter的五子棋小游戏

文章目录 写在前面Tkinter五子棋系列文章写在后面 写在前面 本期内容&#xff1a;基于tkinter的五子棋小游戏 下载地址&#xff1a;https://download.csdn.net/download/m0_68111267/88700190 实验环境 python3.11及以上pycharmtkinter Tkinter Tkinter是Python的一个标准…

通信系统概述

1.定义 通信系统&#xff08;也称为通信网络&#xff09;是利用各种通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来&#xff0c;依靠网络软件及通信协议实现资源共享和信息传递的系统。 2.概述 随着通信技术和网络技术的不断发展&#xff…

dnsReaper:一款功能强大的子域名接管检测工具

关于dnsReaper dnsReaper是一款功能强大的子域名接管检测工具&#xff0c;该工具专为蓝队研究人员和漏洞猎人设计&#xff0c;并且能够在保证运行速度的情况下&#xff0c;提供较高的检测准确率。 该工具每秒大约可以扫描50个子域名&#xff0c;并能针对每个子域名执行50次接…

前端组件样式穿透修改

背景&#xff1a; 在style经常用scoped属性实现组件的私有化时&#xff0c;要改变element-ui某个深层元素&#xff08;例如.el-input__inner&#xff09;或其他深层样式&#xff0c; 但是element-ui 并没有提供修改的接口。 这时&#xff0c;就是需要手动修改样式。 解决方法…

UE5近战对抗系统Tutorial

文章目录 BP_Character 组合攻击Notify State 检测攻击BP_Character 攻击反馈BP_Character 生命系统BP_Character 死亡效果BP_Character 武器系统BP_Enemy 初始化和行为树 BP_Character 组合攻击 首先我们获取攻击动画&#xff0c;在这里使用的是 Easy Combo Buffering 的攻击…

2024全国高校名单发布,电子版下载!

今天&#xff0c;教育部网站发布了《全国高等学校名单》。截至2024年6月20日&#xff0c;全国高等学校共计3117所&#xff0c;其中&#xff1a;普通高等学校2868所&#xff0c;含本科学校1308所、高职&#xff08;专科&#xff09;学校1560所&#xff1b;成人高等学校249所。本…

游戏本地化以拓展海外市场

Logrus IT Korea的总监元庆燕&#xff08;KyoungYeon Won&#xff09;发表了一场关于“游戏本地化”的讲座&#xff0c;讲述了独立游戏开发者如何在梦想拓展海外市场的过程中&#xff0c;正确地本地化他们的游戏以满足国际市场的期望&#xff0c;以及实现这一重要任务的过程。 …

集合:泛型深入

一.泛型的好处 1.统一了数据类型 2.把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为在编译阶段类型就能确定下来。 二.泛型的细节 1.泛型中不能写基本数据类型 2.指定泛型的具体类型后,传递数据时,可以传入该类类型或者该类的子类类型 3.如果不…

智能血压计,让健康“听”得见- WT588F02B血压计语音方案

一、语音血压计开发背景&#xff1a; 在快节奏的现代生活中&#xff0c;健康成为了我们最宝贵的财富。而血压&#xff0c;作为反映人体健康状态的重要指标之一&#xff0c;更是需要我们时刻关注。传统的血压计虽然能够为我们提供准确的血压数据&#xff0c;但往往因为操作复杂…

全外显子测序分析流程1 - Fastq质控与去接头、低质量和引物序列

全外显子测序分析流程1 - Fastq质控与去接头、低质量和引物序列 1. 运行实例 # -d 样本根目录 # -s 样本名称 python trim_fastq.py -d /result/WES/sample -s sample2. fastqc质控报告与去接头、低质量序列主程序 对raw fastq和clean fastq生成质控QC报告trim_galore去接头、…

【Android】记录在自己的AMD处理器无法使用Android studio 虚拟机处理过程

文章目录 问题&#xff1a;无法在AMD平台打开Android studio 虚拟机&#xff0c;已解决平台&#xff1a;AMD 5700g系统&#xff1a;win10专业版1、在 amd平台上使用安卓虚拟机需要安装硬件加速器2、关闭win10上的系统服务 问题&#xff1a;无法在AMD平台打开Android studio 虚拟…

京东云 AX1800 Pro 路由器 亚瑟 R2242 u-boot 和 OpenWrt 刷机教程

上周末陪媳妇儿逛街的时候无意中看到了一篇 OpenWrt 的公众号文章&#xff1a;百元京东亚瑟wifi6路由器真香&#xff0c;支持刷OpenWrt系统。 然后&#xff0c;就开启了将近一周的苦逼刷机过程&#xff0c;因为最近工作忙只能利用晚上的时间来搞&#xff0c;刷机用了一天多搞定…

代码随想录算法训练营第30天| 122.买卖股票的最佳时机II、55. 跳跃游戏、 45.跳跃游戏II、 1005.K次取反后最大化的数组和

122.买卖股票的最佳时机II 题目链接&#xff1a;122.买卖股票的最佳时机II 文档讲解&#xff1a;代码随想录 状态&#xff1a;so easy 思路&#xff1a;不用考虑操作的次数&#xff0c;其实只要有赚就拿下就行了。 题解&#xff1a; class Solution {public int maxProfit(in…

大数据经典sql

一、连续登录问题 问题&#xff1a;1&#xff09;、每个用户连续登录最大天数 2&#xff09;、连续登录大于三天的用户数 分析&#xff1a;本质都是计算用户连续登录天数 方案一&#xff1a;利用排序窗口 select a.user_id,a.date_rslt,count(1) as cnt from (select t.…

概率论与数理统计期末复习

概率论常考知识点汇总 总括 1. 基础概率论 概率定义&#xff1a;理解概率是事件发生的可能性度量&#xff0c;范围从0&#xff08;不可能&#xff09;到1&#xff08;必然发生&#xff09;。概率公理&#xff1a;掌握概率的三大公理&#xff0c;即非负性、规范性和可加性。条…

Linux【实操篇-时间日期类 用户和用户组管理】

06 【实操篇-时间日期类 用户和用户组管理】 1.时间日期类 1.1 显示当前日期 基本语法 date (功能描述:显示当前时间)date %Y(功能描述:显示当前年份)date %m(功能描述:显示当前月份)date %d (功能描述:显示当前是哪一天)date "%Y-%m-%d %H:%M:%S" (功能描述:显示…

视频监控平台功能介绍:内部设备管理(rtsp、sdk、onvif、ehome/ISUP、主动注册协议等)

一、功能概述 AS-V1000视频平台是一套集成了用户设备权限管理、视音频监控、大容量存储、电子地图的系统平台软件。它结合了现代视频技术、网络通讯技术、计算机控制技术、流媒体传输技术的综合解决方案&#xff0c;为用户提供了强大的、灵活的组网和应用能力。 AS-V1000管理端…