【面试经典150

2023-11-09

写在前面

本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更……

专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删:

  • Tag:介绍本题牵涉到的知识点、数据结构;
  • 题目来源:贴上题目的链接,方便大家查找题目并完成练习;
  • 题目解读:复述题目(确保自己真的理解题目意思),并强调一些题目重点信息;
  • 解题思路:介绍一些解题思路,每种解题思路包括思路讲解、实现代码以及复杂度分析;
  • 知识回忆:针对今天介绍的题目中的重点内容、数据结构进行回顾总结。

Tag

【原地操作】【双指针】【数组】


题目来源

面试经典 150 题 —— 27. 移除元素


题目解读

移除数组 nums 中的 val 值,要求原地操作,但是数组中的元素顺序可以改变,最后输出移除所有 val 后数组的长度。


解题思路

方法一:原地操作

原地操作,那么我们就不能使用额外的数组来存放非 val 的元素从而实现移除操作,但是我们可以使用 “覆盖” 的思想来模拟移除操作。

具体地,维护两个指针 iji 指针用来遍历数组查找哪个位置上的元素等于 valj 指向用来覆盖 i 位置的元素。初始化 i = 0j = nums.size() - 1,只要 nums[i] = val,我们就用 nums[j] 来覆盖,使用了 nums[j] 之后,j 指针就要左移指向下一个将要使用的元素;只有 nums[i] != val 时,我们才会右移 i 指针,准备处理下一个元素。

直到 i 指针超过 j 指针,表明可以被用来覆盖的元素已经没有了,i 的值就是原数组中的非 val 的数,直接返回 i

实现代码

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int i = 0, j = nums.size() - 1;
        while (i <= j) {
            if (nums[i] == val) {
                nums[i] = nums[j--];
            }
            else ++i;
        }
        return i;
    }
};

复杂度分析

时间复杂度: O ( n ) O(n) O(n) n n n 为原数组 nums 的长度。

空间复杂度: O ( 1 ) O(1) O(1),仅使用了两个指针变量,是原地操作。


写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【面试经典150 的相关文章

随机推荐

  • vue3中的setup方法

    一 vue2中的定义变量和方法的写法 在介绍v3的setup之前 我们先来看看在v2中是如何定义变量和方法的
  • stm32——PWM概述

    一 PWM生成方波 C51是用软件的方式进行模拟出方波 STM32F103C8T6中硬件就可以生成PWM方波 芯片中的PWM资源 高级定时器 TIM1 7路 通用定时器 TIM2 TIM4 各4路 共19路PWM 二 PWM输出模式 pwm
  • 【Redis】主从复制

    Redis主从复制 文章目录 Redis主从复制 搭建一主多从 复制原理 常用3招 一主二仆 薪火相传 反客为主 哨兵模式 sentinel 使用步骤 故障恢复 主机数据更新后根据配置和策略 自动同步到备机的master slaver机制
  • 每个程序员都必须遵守的编程原则

    每个程序员都必须遵守的编程原则 来源 外刊IT评论 发布时间 2011 09 03 16 15 阅读 1781 次 原文链接 全屏阅读 收藏 摘要 好的编程原则跟好的系统设计原则和技术实施原则有着密切的联系 本文是从 The Princip
  • Kafka消费者组重平衡(二)

    文章目录 概要 重平衡通知机制 消费组组状态 消费端重平衡流程 Broker端重平衡流程 概要 上一篇Kafka消费者组重平衡主要介绍了重平衡相关的概念 本篇主要梳理重平衡发生的流程 为了更好地观察 数据准备如下 kafka版本 kafka
  • 猫和老鼠服务器维修有问题,猫和老鼠手游老是掉线怎么办 频繁网络中断解决方法...

    猫和老鼠手游为什么老是掉线呢 许多玩家在玩的过程中频繁遇到这个掉线的问题 导致体验非常糟糕 有什么方法可以减轻或者彻底避免掉线的问题呢 下面小编就为大家介绍一下吧 1 信号不好 如果你是身处于火车 地铁 地下室 电梯 或者比较偏远信号不好的
  • Solidity学习笔记2——Webase积分合约

    代码段学习笔记 代码来源 Webase合约仓库 我只做了增加注释的工作用来记录相关知识点 pragma solidity 0 4 24 import SafeMath sol import Roles sol import Address
  • 特征值_特征值的性质:特征多项式角度

    本文从特征多项式展开角度介绍了特征值的性质 从而使读者有更加深刻的理解 一 特征值的性质 二 特征值性质的联系 若A为3阶方阵 我们将系数行列式展开 最后得到特征多项式如下 推导过程见李永乐线性代数辅导讲义 2021版 P2 评注 部分 现
  • AMR文件格式分析

    最近在传输手机录音时 遇到了AMR编码的问题 开始以为可以任意截断amr文件 加个文件头就可以播放的 后来发现是有问题 这样得到的amr音频有些不能正常播放 后来参看amr格式后 才知道amr文件是一帧一帧的 如果是按照完整的帧前面添加文件
  • socket、tcp、udp、http 的认识及区别

    网络由下往上分为物理层 数据链路层 网络层 传输层 会话层 表示层和应用层 IP 协议对应于网络层 TCP协议对应于传输层 HTTP协议对应于应用层 三者从本质上来说没有可比性 socket则是对TCP IP协议的封装和应用 可以说 TPC
  • 【华为OD机试】数字反转打印(python, java, c++, js)

    数字反转打印 前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email n
  • Codeforces 1月8日dev.2 A题解析

    先看题目 A Make it Beautiful time limit per test3 seconds memory limit per test512 megabytes inputstandard input outputstand
  • 渗压计的用途及分类

    渗压计也称作孔隙水压力计 是用于测量构筑物内部孔隙水压力或渗透压力的传感器 按仪器类型可以分为差动电阻式 振弦式 压阻式及电阻应变片等 渗压计的用途 渗压计适用于长期埋设在水工结构物或其它混凝土结构物及土体内 测量结构物或土体内部的渗透 孔
  • 解决idea start failed:异常key com.tang.intellij.lua.luacheck.LuaCheckSettings

    Idea之前在做Redis项目时使用了Lua脚本 弹出提示 顺手安装了一个Lua插件 导致再次开启Idea时抛出异常 查考https blog csdn net licheetools article details 118651511 在
  • 原码, 反码, 补码 详解

    转自 https www cnblogs com zhangziqiu archive 2011 03 30 ComputerCode html 本篇文章讲解了计算机的原码 反码和补码 并且进行了深入探求了为何要使用反码和补码 以及更进一步
  • https 获取安全证书和配置nginx

    1 阿里云申请免费的安全证书 一般几个小时就ok 2 服务器nginx创建目录cert 3 将下载下来的压缩包打开 复制里面的文件到服务器nginx配置cert目录下 可以更改名字 4 修改nginx conf配置文件 server lis
  • Hive 分区表

    Hive 分区表创建 hive gt CREATE TABLE t3 id int name string age int PARTITIONED BY Year INT Month INT ROW FORMAT DELIMITED FIE
  • 【NLP】第 1 章 语言处理和 Python

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • Team Leader 究竟要不要写代码?

    今天浏览 Medium 看到一篇直接喊出 技术负责人 请停止写代码 的文章 晚间和家属一起坐火车 不禁一起围绕着这个话题进行了一番讨论 文章中说到 成为一个 Team Leader 最难的是要明白 你不再是一个真正的开发者 了 既编程又管理
  • 【面试经典150

    文章目录 写在前面 Tag 题目来源 题目解读 解题思路 方法一 原地操作 写在最后 写在前面 本专栏专注于分析与讲解 面试经典150 算法 两到三天更新一篇文章 欢迎催更 专栏内容以分析题目为主 并附带一些对于本题涉及到的数据结构等内容进