数组之移除元素

news2024/11/16 21:56:54

本文旨在复习巩固
此题为leetcode上的27题
在这里插入图片描述
在这里插入图片描述

数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。

1 暴力解法


如图所示,该方法是十分麻烦的,因为每次找到val,都要删除它,让后面的元素不断往前面覆盖。后面介绍一个更快的方法。

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
         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也向前移动一位
                 size--;// 此时数组的大小-1
             }
         }
         return size;
    }
};

2 双指针法

双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。

快指针:寻找新数组的元素
慢指针:指向新数组新元素的下标

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
         int slow = 0; // 慢指针
         for (int fast = 0; fast < nums.size(); fast++)
         {
         	if (nums[fast] != val) // 新数组就是不含有目标元素的数组
         	{
         		nums[slow++] = nums[fast];
         	}		 	
         }
         return slow;
    }
};

#########################################################################################
##################################不积跬步,无以至千里#####################################
#########################################################################################

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

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

相关文章

软件开发“自我毁灭”的七宗罪

软件开发是一门具有挑战性的学科&#xff0c;它建立在数以百万计的参数、变量、库以及更多必须绝对正确的因素之上。即便是一个字符不合适&#xff0c;整个堆栈也会随之瓦解。 多年来&#xff0c;软件开发团队已经想出了一些完成工作的规则。从复杂的方法论到新兴的学科和哲学…

Linux文件系统 struct inode 结构体解析

文章目录 前言一、inode 简介二、dentry 简介三、struct inode3.1 字段说明3.2 inode链表3.3 struct inode_operations3.4 inode相关函数 参考资料 前言 这篇文章介绍了VFS - struct file&#xff1a;Linux文件系统 struct file 结构体解析 接下来介绍VFS - struct inode&…

回首往昔,初学编程那会写过的两段愚蠢代码

一、关于判断两个整数是否能整除的GW BASIC创意代码 记得上大学时第一个编程语言是BASIC&#xff0c;当时Visual Basic还没出世&#xff0c;QBASIC虽然已经在1991年随MS-DOS5.0推出了&#xff0c;但我们使用的还是 GW-BASIC&#xff0c; 使用的教材是谭浩强、田淑清编著的《BA…

Linux虚拟机静态IP设置

1.环境配置 首先要准备好两台centos虚拟机&#xff0c;在高级篇部分可能有数据库主从复制&#xff0c;所以暂时先开两台虚拟机。 两台虚拟机需要更改&#xff1a; mac地址主机名ip地址UUID 1.更改主机名 更改虚拟机的主机名 vim /etc/hostname2.更改静态ip地址 /etc/sysc…

basic_sr介绍

文章目录 pytorch基础知识和basicSR中用到的语法1.Sampler类与4种采样方式2.python dict的get方法使用3.prefetch_dataloader.py4. pytorch 并行和分布式训练4.1 选择要使用的cuda4.2 DataParallel使用方法常规使用方法保存和载入 4.3 DistributedDataParallel 5.wangdb 入门5.…

5秒用Java写一个快速排序算法?这个我在行

快速排序是一种非常高效的排序算法&#xff0c;由英国计算机科学家霍尔在1960年提出。它的基本思想是选择一个基准元素将待排序数组分成两部分&#xff0c;其中一部分的所有元素都比基准元素小&#xff0c;另一部分的所有元素都比基准元素大&#xff0c;然后对这两部分再分别进…

雷军在微博发文:小米澎湃 OS(Xiaomi HyperOS)正式版已完成封包

本心、输入输出、结果 文章目录 雷军在微博发文&#xff1a;小米澎湃 OS&#xff08;Xiaomi HyperOS&#xff09;正式版已完成封包前言搭载 小米澎湃 OS&#xff08;Xiaomi HyperOS&#xff09;的小米 14回顾 MIUI小米澎湃 OS&#xff08;Xiaomi HyperOS&#xff09; 相关跳转小…

spring boot MongoDB实战

项目搭建 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

中文编程语言开发工具开发的软件案例:定制开发扫码识别位置程序适用于车间物品摆放管理

中文编程语言开发工具开发的软件案例&#xff1a;定制开发扫码识别位置程序适用于车间物品摆放管理 中文编程语言开发工具开发的软件案例&#xff1a;定制开发扫码识别位置程序适用于车间物品摆放管理&#xff0c; 中文编程系统化教程&#xff0c;不需英语基础。学习链接 htt…

string类模拟实现(c++)(学习笔记)

string 1.构造函数1.1 不带参构造1.2 带参数的构造函数1.3 合并两个构造函数。 2. 析构函数3.拷贝构造函数4. 赋值运算符重载5. size()/capacity()6. 解引用[]8.iterator迭代器7.Print()8.> 8. push_back()&append()8.1 reserve() 9. 10.insert()10.1 任意位置插入一个字…

在线客服软件的市场需求及前景如何?

随着互联网的不断发展&#xff0c;越来越多的企业开始意识到在线客服软件在客户服务中的重要作用。现在&#xff0c;各种形态的在线客服软件涌现出来&#xff0c;如何选择适合自己公司的线上客服软件成为了企业面临的一个挑战。本文将从市场需求和前景方面分析在线客服软件行业…

【Loopback Detection 环回检测以及原理解读】

Loopback Detection简介 Loopback Detection&#xff08;环回检测&#xff09;通过周期性发送环回检测报文来检测设备下挂网络是否存在环路。 网络中的环路会导致设备对广播、组播以及未知单播等报文进行重复发送&#xff0c;造成网络资源浪费甚至网络瘫痪。为了能够及时发现…

MS4553S双向电平转换器可pin对pin兼容TXB0102/TXS0102

MS4553S是一款双向电平转换器&#xff0c;可以用作混合电压的数字信号系统中。其使用两个独立构架的电源供电&#xff0c;A端供电电压范围是1.65V到5.5V&#xff0c;B端供电电压范围是2.3V到5.5V。可用在电压为1.8V、2.5V、3.3V和5V的信号转换系统中。当OE端为低电平时&#xf…

大学生毕业嵌入式和JAVA哪条未来更有前景?

今日话题&#xff0c;大学生毕业后选择嵌入式和Java两个岗位哪个更具前景&#xff1f;答案因个人情况而异。通常来说&#xff0c;对于零基础转行的同学&#xff0c;学习Java可能会是一个更广泛选择的建议&#xff0c;因为Java岗位更多&#xff0c;且不需要涉及硬件知识。然而&a…

Live800:一个优秀的客服应具备哪些技能?

一个优秀的客服应该具备哪些技能&#xff1f;这是每个企业在招聘和培训客服人员时都需要考虑的问题。一名优秀的客服不仅需要善于沟通&#xff0c;还需要具备专业知识、灵活应变、耐心细致等多方面的能力。在这篇文章中&#xff0c;我们将从多个方面探讨一个优秀客服应该具备什…

MATLAB——极限学习机参考程序

欢迎关注“电击小子程高兴的MATLAB小屋” %% I. 清空环境变量 clear all clc %% II. 训练集/测试集产生 %% % 1. 导入数据 load iris_data.mat %% % 2. 随机产生训练集和测试集 P_train []; T_train []; P_test []; T_test []; for i 1:3 temp_input features((i-…

Bug小能手系列(python)_12: 使用mne库读取.set文件报错 TypeError: ‘int‘ object is not iterable

使用mne库读取.set文件报错 0 引言1. 报错原因2. 推荐解决方案3. 总结 0 引言 在使用mne库读取.set文件&#xff0c;然后对文件进行处理。在运行过程中出现报错&#xff1a;TypeError: int object is not iterable 其中&#xff0c;代码库包的版本这里主要介绍mne的版本&…

MYSQL 连接

高频 SQL 50 题&#xff08;基础版&#xff09; - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台 1378. 使用唯一标识码替换员工ID SELECT COALESCE(unique_id, NULL) AS unique_id,name FROM Employees LEFT JOIN EmployeeUNI ON Employees.…

7.MidBook项目经验之阿里OSS,微信支付(退款),定时任务,图表数据处理

1.阿里云实名认证 阿里云对象存储oss,标准高频率访问, 低频访问存储,归档存储(根本不经常访问) 冗余存储(备份) 读写权限(所有人还是自己访问) Component public class ConstantOssPropertiesUtils implements InitializingBean {不用注入,由spring创建bean使用流 MultipartFil…

SpringBoot整合RabbitMQ并实现消息发送与接收

系列文章目录 解析JSON格式参数 & 修改对象的key VUE整合Echarts实现简单的数据可视化 Java中运用BigDecimal对字符串的数值进行加减乘除等操作 List&#xff1c;HashMap&#xff1c;String,String&#xff1e;&#xff1e;实现自定义字符串排序&#xff08;key排序、Valu…