两种解法解决 LeetCode 27. 移除元素【C++】

news2024/12/27 18:19:42

移除元素

  • 27. 移除元素
    • 题目:[移除元素](https://leetcode.cn/problems/remove-element/description/)
    • 示例和提示:
    • 解法:
      • 1. 暴力解法
    • 2. 快慢指针

27. 移除元素

题目:移除元素

在这里插入图片描述

示例和提示:

在这里插入图片描述

解法:

1. 暴力解法

//暴力解法:
//实际上就是遍历数组找到需要删除的元素,然后再嵌套一层循环将该元素后面的依次向前覆盖。
class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        //为了不让每次循环都调用size()函数:
        int size = nums.size();
        //第一步,遍历目标数组:
        for(int i = 0; i < size; i++)
        {
            //找到需要删除元素的位置;
            if(nums[i] == val)
            {
                //删除元素从前向后遍历:
                for(int j = i+1; j < size; j++)
                {
                    nums[j-1] = nums[j];
                }
                 //这里有一个迭代器失效问题,此时i指向原始数组中被删除元素的下一个位置,外层循环末尾
                 //还会使得i++,没有判断就跳过了这个元素,所以得i--;
            i--;
            size--;
            }
 
        }

        return size;
    }
};

2. 快慢指针

//快慢指针法:
//很酷很丝滑的解法,快指针勇往无前的遍历,慢指针负责将快指针指向位置的元素复制到自己指向的位置,
//当快指针指向位置的元素需要删除时,慢指针停止赋值,直到快指针再次指向一个不需要删除的元素的位置。

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int fastPoit = 0;
        int slowPoit = 0;
        int size = nums.size();
        for( ; fastPoit < size; fastPoit++)
        {
            if(nums[fastPoit] != val)
            {
                nums[slowPoit] = nums[fastPoit];
                slowPoit++;
            }
        }
        //slowPoit此时的指向正是新数组末尾的下一个位置,因为slowPoit++
        //是放在赋值最后执行的,所以刚好也就是新长度:
        return slowPoit;
    }
};

😄 创作不易,你的点赞和关注都是对我莫大的鼓励,再次感谢您的观看😄

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

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

相关文章

【C++】DICOM医学影像工作站PACS源码

PACS即影像存档与传输系统&#xff0c;是医学影像、数字化图像技术、计算机技术和网络通讯技术相结合的产物&#xff0c;是处理各种医学影像信息的采集、存储、报告、输出、管理、查询的计算机应用程序。 PACS是基于DICOM标准的医学影像管理系统&#xff0c;其模块覆盖了从影像…

Java:ArrayList源码解析

Java&#xff1a;ArrayList源码解析 导言 我们都知道ArrayList是一个可以实现自动扩容的List类&#xff0c;为了理解ArrayList是如何进行扩容的&#xff0c;我们就有必要对ArrayList的源码进行分析。本文中将着重研究源码中ArrayList是如何实现自动扩容的。 源码解析 ArrayL…

合宙Air724UG LuatOS-Air LVGL API控件-页面 (Page)

页面 (Page) 当控件内容过多&#xff0c;无法在屏幕内完整显示时&#xff0c;可让其在 页面 内显示。 示例代码 page lvgl.page_create(lvgl.scr_act(), nil) lvgl.obj_set_size(page, 150, 200) lvgl.obj_align(page, nil, lvgl.ALIGN_CENTER, 0, 0)label lvgl.label_crea…

netbeans+wamp+php配置调试代码

netbeans版本&#xff1a;8.1 wamp版本是2.5,里面的php5.5.12&#xff0c;apache2.4.9&#xff0c;mysql5.6.17。 wamp已经自带Xdebug&#xff08;PHP程序调试器&#xff09;。 步骤&#xff1a; 1.路径&#xff1a;D:\wamp\bin\apache\apache2.4.9\bin\php.ini 2.打开ne…

MyBatis 动态 SQL 实践教程

一、MyBatis动态 sql 是什么 动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中&#xff0c;开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。例如&#xff0c;拼接时要确保添加了必要的空格&#xff0c;还要注意去掉列…

电脑上jpg图片怎么改大小kb?三招学会图片压缩

在电脑上处理jpg图片时&#xff0c;有时候我们需要修改图片的大小&#xff0c;尤其是在需要上传图片到一些限制大小的平台时。那么&#xff0c;如何更改jpg图片的大小呢&#xff1f;今天&#xff0c;我将分享三个实用的方法&#xff0c;让大家轻松解决图片太大的问题&#xff0…

仿射密码 affine

参考链接&#xff1a;https://www.cnblogs.com/0yst3r-2046/p/12172757.html 仿射加密法 在仿射加密法中&#xff0c;字母表的字母被赋予一个数字&#xff0c;例如 a0&#xff0c;b1&#xff0c;c2…z25 。仿射加密法的密钥为0-25直接的数字对。 仿射加密法与单码加密法没什么…

ubuntu修改用户名和用户密码

1.修改passwd文件 sudo gedit /etc/passwd2.修改shadow文件 sudo gedit /etc/shadow3.修改home目录下文件夹名 mv /home/原用户名/ /home/新用户名4.修改sudo权限&#xff08;修改group用户组&#xff09; sudo gedit /etc/group5.修改用户密码 sudo passwd username #修改…

位运算 |(按位或) (按位与) ^(按位异或)

目录 文章目录&#xff1a;本章讲解的主要是刷题系列 1&#xff1a;首先会介绍 I & ^这三个操作符的作用&#xff0c;性质 2&#xff1a;三道使用位运算操作符的经典 笔试题(来自剑指offer) 题目链接如下&#xff1a; 1:136. 只出现一次的数字 - 力扣&#xff08;LeetCode…

Jmeter进阶使用指南-使用断言

Apache JMeter是一个流行的开源负载和性能测试工具。在JMeter中&#xff0c;断言&#xff08;Assertions&#xff09;是用来验证响应数据是否符合预期的一个重要组件。它是对请求响应的一种检查&#xff0c;如果响应不符合预期&#xff0c;那么断言会标记为失败。 以下是如何在…

Echarts 中国地图

直接展示效果图&#xff1a; 我们需要引入两个文件&#xff1a; echarts.js 官网地址下载&#xff1a;快速上手 - Handbook - Apache ECharts chain.js 这个官网已经找不到了&#xff0c;需要自行搜寻下载 也可以私信我(网上下载的China.js会导致省名称定为不准确&#xff0…

Go语言最全面试题,拿offer全靠它,附带免积分下载pdf

面试题文档下链接点击这里免积分下载 go语言入门到精通点击这里免积分下载 文章目录 Go 基础类GO 语言当中 NEW 和 MAKE 有什么区别吗&#xff1f;PRINTF(),SPRINTF(),FPRINTF() 都是格式化输出&#xff0c;有什么不同&#xff1f;GO 语言当中数组和切片的区别是什么&#xf…

【C++】函数重载 ③ ( 为函数指针赋值重载函数 )

文章目录 一、函数指针回顾1、函数指针概念2、函数指针语法3、代码示例 - 函数指针示例 二、为函数指针赋值重载函数1、为函数指针赋值重载函数2、代码示例 - 为函数指针赋值重载函数 博客总结 : 重载函数 : 使用 相同 的 函数名 , 定义 不同 的 函数参数列表 ;判定标准 : 只有…

判断计算机处理器的大小端

一、什么是大小端&#xff1f; 大端模式&#xff1a;低位字节存在高地址&#xff0c;高位字节存在低地址 小端模式&#xff1a;高位字节存在高地址&#xff0c;低位字节存在第地址 二、如何判断计算机处理器是大端还是小端&#xff1f; ①使用变量 x 的值本身来检查处理器存储…

九章云极DataCanvas公司参与大模型重点项目合作签约,建设产业集聚区

9月3日&#xff0c;2023中国国际服务贸易交易会石景山国际开放合作论坛在石景山首钢园成功举办&#xff0c;北京市委常委、常务副市长夏林茂&#xff0c;商务部服务贸易和商贸服务业司司长王东堂&#xff0c;北京市石景山区委书记常卫出席论坛并致辞。论坛期间正式举行“石景山…

关于内涝积水的那些事儿

内涝积水是指城市区域在强降雨、排水系统失效或不足的情况下&#xff0c;大量降雨无法及时排除而积聚在地面上的现象。内涝积水不仅给城市环境和居民的生活带来困扰&#xff0c;同时也给社会经济、交通运输和居民安全造成了严重的危害。 内涝积水的影响 1.内涝积水会对城市环境…

亚马逊鲲鹏系统有哪些优势特点

亚马逊鲲鹏系统是一款全自动化操作的软件&#xff0c;有批量注册账号、自动养号、点击广告、根据关键词进行加购、下单购买、留评、评论点赞或举报、QA等&#xff0c;是一款功能比较齐全的软件。 亚马逊鲲鹏系统有以下优势特点&#xff1a; 1.功能齐全 亚马逊鲲鹏系统一套软件…

【买华为云产品,返CSDN余额红包】,快来薅羊毛!

华为云828营销季火热进行中&#xff0c;9月15日前首次购买华为云产品官网任意一款产品&#xff0c;可获得相应比例的CSDN红包。 热门产品云服务器、域名、商标、主机安全等产品都在其中&#xff0c;任君挑选。 活动优惠价购买后还是获得相应比例余额红包&#xff0c;实际付费金…

nodejs+vue+elementui高校人事管理系统

总体设计 根据高校人事管理系统的功能需求&#xff0c;进行系统设计。 用户功能&#xff1a;用户进入系统可以实现首页、个人中心、职称申报管理、工资信息管理、绩效信息管理、奖惩信息管理、招聘管理等进行操作&#xff1b; 院长功能&#xff1a;院长进入系统可以实现首页、个…

用通俗易懂的方式讲解大模型分布式训练并行技术:概述

近年来&#xff0c;随着Transformer、MOE架构的提出&#xff0c;使得深度学习模型轻松突破上万亿规模参数&#xff0c;传统的单机单卡模式已经无法满足超大模型进行训练的要求。因此&#xff0c;我们需要基于单机多卡、甚至是多机多卡进行分布式大模型的训练。 而利用AI集群&a…