看完这篇文章你就彻底懂啦{保姆级讲解}-----(LeetCode刷题27移除元素) 2023.4.18

news2025/1/22 16:05:27

目录

    • 前言
    • 算法题(LeetCode 27.移除元素)—(保姆级别讲解)
      • 分析题目
      • 算法思想(重要)
      • 暴力解法代码:
      • 双指针法(快慢指针法)代码:
      • 反思
    • 结束语

前言

本文章一部分内容参考于《代码随想录》----如有侵权请联系作者删除即可,撰写本文章主要目的在于记录自己学习体会并分享给大家,全篇并不仅仅是复制粘贴,更多的是加入了自己的思考,希望读完此篇文章能真正帮助到您!!!

算法题(LeetCode 27.移除元素)—(保姆级别讲解)

力扣题目链接

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

分析题目

  1. 整形数组
  2. 删除元素后的新数组可以改变原有的顺序(建议使用双指针法(快慢指针法))
  3. 如果删除元素后的新数组不可以改变原有的顺序(建议使用双指针法(相向双指针法)相向双指针法本篇文章不讲解,在以后的文章中会讲解)
  4. 不需要考虑数组中超出新长度后面的元素

算法思想(重要)

这里主要讲解两种算法思想,分别是:

  1. 暴力解法
  2. 双指针法(快慢指针法)

暴力解法代码:

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;

    }
};

// 时间复杂度:O(n^2)
// 空间复杂度:O(1)

为了更能让大家了解暴力解法的算法思想,作者特意画了一张图供大家观看!!!
在这里插入图片描述

双指针法(快慢指针法)代码:

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int slowIndex = 0;
        for (int fastIndex = 0; fastIndex < nums.size(); fastIndex++) {
            if (val != nums[fastIndex]) {
                nums[slowIndex++] = nums[fastIndex];
            }
        }
        return slowIndex;
    }
};

// 时间复杂度:O(n)
// 空间复杂度:O(1)

为了更能让大家了解暴力解法的算法思想,作者特意画了一张图供大家观看!!!
在这里插入图片描述
在这里插入图片描述

反思

  1. 快指针:寻找新数组的元素,新数组就是不含有目标元素的数组(也就是不包括被删除的元素)
  2. 慢指针:获取新数组中需要更新的位置

结束语

如果觉得这篇文章还不错的话,记得点赞 ,支持下!!!

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

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

相关文章

UDP - C/S模型

由于UDP不需要维护连接&#xff0c;程序逻辑简单了很多&#xff0c;但是UDP协议是不可靠的&#xff0c;保证通讯可靠性的机制需要在应用层实现。 通信函数 ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen); 参…

无人机动力系统优化测试平台-15kg级-Flight Stand 15

产品简介 通过Flight Stand 15测试台对电机和螺旋桨的拉力&#xff0c;扭矩&#xff0c;转速&#xff0c;电流&#xff0c;电压&#xff0c;温度&#xff0c;空速&#xff0c;螺旋桨效率和电机效率的测量帮助您精准地描述和评估其性能参数&#xff0c;这是我们五年多来的无人机…

[JAVASE]初识Java:数据类型与变量

CSDN的各位友友们你们好,今天千泽为大家带来的是 [JAVASE]初识Java&#xff1a;数据类型与变量、运算符, 接下来让我们一起了解一下吧! 如果对您有帮助的话希望能够得到您的支持和关注,我会持续更新 数据类型与变量 数据类型 在Java中数据类型分为基本数据类型与引用数据类…

15.2 矩阵链乘法

1.代码 public class MatrixChainMultiplication {public static void main(String[] args) { // 在该代码中&#xff0c;我们首先创建了两个n * n的矩阵m和s&#xff0c;分别用于记录最优值和分割点。 其中m 矩阵 通过i j 来显示在i到j的矩阵链中最优解 // // …

JavaSE/异常

博客制作不易&#xff0c;欢迎各位点赞&#x1f44d;收藏⭐关注 前言 在使用Java编写代码时&#xff0c;我们难免会遇到数组越界、运行超时、栈溢出等异常问题。所以如果我们熟练掌握异常的定义和使用&#xff0c;这对我们学习Java有很大的帮助。 一、异常的定义 程序执行过程…

图书馆管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/87682509 更多系统资源库…

计算机视觉的热门研究方向与发展趋势

计算机视觉产业链 工业界&#xff1a;对学术研究提出需求 最火的两个概念&#xff1a;自动驾驶和元宇宙 相关热点研究方向&#xff1a; &#xff08;1&#xff09;建图技术&#xff1a;三维重建技术&#xff0c;包括SLAM、定位、建图、更新等技术&#xff1b;&#xff08;2&…

学习机器人SLAM导航核心技术(一)

本章节&#xff0c;我们将学习基于SLAM导航的机器人技术。 学习资料主要参照张虎的《机器人SLAM导航核心技术与实战》和高翔的《视觉SLAM十四讲》。 以机器人SLAM导航核心技术与实战作为学习的技术路线。在此基础上增加自己学习到的内容。 第1章&#xff1a;ROS入门必备知识 …

Git介绍与相关操作

git简介 git是用于版本控制的软件&#xff0c;保留历史记录&#xff0c;便于回溯 GitHub中文官方文档 访问GitHub GitHub520 无法访问GitHub太常见了&#xff0c;主要方法就是查ip&#xff0c;改本地host文件。 GitHub520本质也是修改hosts来实现&#xff0c;但是无需手动查…

Pycharm Debug调试技巧

Pycharm Debug调试 Python中的Bug是指程序在执行过程中出现错误的情况。这些错误可能会导致程序崩溃、输出意外的结果或者根本不运行。 常见的Python Bug包括&#xff1a; 语法错误&#xff1a;例如拼写错误、缺少冒号、使用了错误的缩进等等。逻辑错误&#xff1a;程序可以…

草图大师su通过照片建模建筑 零插件sketchup

打开sketchup&#xff0c;相机-匹配新照片。照片的要求&#xff1a; “匹配照片”最适合主要由直角组成的结构。您肯定至少需要一个直角才能使用匹配照片。使用从角落以大约 45 度角拍摄的照片。上图来自谷歌街景图是以 45 度角拍摄的图像示例。如果您正在拍照&#xff0c;则可…

模糊数学求传递闭包(C语言)

一、问题描述 我们在模糊数学中利用传递闭包法进行聚类分析的时候&#xff0c;需要求模糊相似矩阵的传递闭包&#xff0c;对于阶数比较高的矩阵&#xff0c;手工计算太过于繁琐&#xff0c;我们可以借助程序实现。 我们先来看一下模糊矩阵的合成规则&#xff1a; 设为有限论域…

ChatGPT能取代传统伪原创工具吗?

文章伪原创工具是一种计算机辅助写作工具&#xff0c;通过算法和技术实现对原有文章内容进行修改和改写&#xff0c;生成新的、看起来不同于原文的文章&#xff0c;以达到避免抄袭和提高原创性的目的。今天我们来聊聊传统伪原创工具和使用ChatGPT进行文章改写的优缺点。 一、传…

【状态估计】电力系统状态估计的虚假数据注入攻击建模与对策(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

C++ Linux Web Server 面试基础篇-操作系统(一、Linux基础)

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…

SpringBoot访问静态资源和jar外部静态资源,部署前端打包后的vue项目放入静态资源里

记录一下使用SpringBoot访问静态资源和SpringBoot打包之后的jar外部静态资源&#xff0c;在开发的时候&#xff0c;一般选择前后端分离的方式&#xff0c;前端使用vue 后端使用SpringBoot&#xff0c;通常情况下&#xff0c;部署都是前端通过http去请求后端资源&#xff0c;涉及…

CVE-2021-27905 Apache Solr SSRF漏洞

预备知识 1. 漏洞信息 漏洞编号&#xff1a;CVE-2021-27905 漏洞名称&#xff1a;Apache Solr SSRF漏洞 漏洞描述&#xff1a;Apache Solr是一个开源的搜索服务&#xff0c;使用Java编写、运行在Servlet容器的一个独立的全文搜索服务器&#xff0c;是Apache Lucene项目的开源…

在Claude穿越千年,问了孔子人生问题

&#x1f4d5;如果大家还不知道Claude的话&#xff0c;可以先了解下&#xff0c;它是chatgpt最大的竞争对手。他有很多的知识&#xff0c;能做的事情也非常的多。 今天我们就让他用孔子的思想来跟我们对话&#xff0c;看看他会怎么回答我们的人生问题。 我们先问问他&#xf…

组播协议的RP

某组播网络示意图如图,其中MCS1是组播地址(G1)的组播源,PC1和PC2是组G1的接收者。 1.上述组播网络中,端口1、2、3需要运行哪些协议,为什么需要运行这些协议?(仅填必配的组播协议)详细写出具体原因 结合上述拓扑,考虑到存在RP场景,因此运行组播路由协议为PIM-SM协议,…

『pyqt5 从0基础开始项目实战』07. 次数清零与多行数据删除(保姆级图文)

目录 导包和框架代码 次数清零按钮添加绑定事件实现数据清零 数据删除按钮添加绑定事件实现删除功能完整代码总结 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏&#xff0c;持续更新中 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏&#xff0c;持续更新中 导包和框架代码 请…