LeetCode 27.移除元素 思考分析

题目
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例 1:

给定 nums = [3,2,2,3], val = 3,

函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。

你不需要考虑数组中超出新长度后面的元素。
示例 2:

给定 nums = [0,1,2,2,3,0,4,2], val = 2,

函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。

注意这五个元素可为任意顺序。

你不需要考虑数组中超出新长度后面的元素。

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝
int len = removeElement(nums, val);// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。
for (int i = 0; i < len; i++) {print(nums[i]);
}

暴力法:0ms过

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;}
};

在这里插入图片描述

双指针法:

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;}
};

在这里插入图片描述

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

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

相关文章

九、非规则组织分析及其数学模型——曲线斜纹组织

曲线斜纹组织图&#xff1a; 因为其形状酷似抛物线&#xff0c;抛物线又是曲线中的一种&#xff0c;故称为曲线斜纹组织。 特点&#xff1a;1&#xff0c;每一根经纱上的组织点运动规律不变 2&#xff0c;飞数是变化的&#xff0c;故也称为变飞数组织 飞数满足的两个条件&…

计算机公式column,函数公式的左膀右臂:ROW、COLUMN函数知多少

一个公式生成乘法口诀表演示的公式中用到了两个函数&#xff1a;ROW和COLUMN&#xff0c;这两个函数的用途非常广泛&#xff0c;可以配合其他函数实现很多功能(尤其是和VLOOKUP函数)&#xff0c;另外和这两个函数相似的还有ROWS和COLUMNS函数&#xff0c;也顺便介绍下。函数说明…

apache2.4.x三种MPM介绍

三种MPM介绍 Apache 2.X 支持插入式并行处理模块&#xff0c;称为多路处理模块&#xff08;MPM&#xff09;。在编译apache时必须选择也只能选择一个MPM&#xff0c;对类UNIX系统&#xff0c;…

LeetCode 15. 三数之和 思考分析(双指针解)

目录初解&#xff1a;未考虑去重二解&#xff1a;未考虑去重位置三解&#xff1a;AC题目&#xff1a;给你一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 &#xff1f;请你找出所有满足条件且…

十、非规则组织分析及其数学模型——锯齿形斜纹组织

锯齿形斜纹组织图&#xff1a; 分析&#xff1a; 前半齿长度k&#xff0c;表示山谷到山峰的列数&#xff0c;也就是锯齿的宽度&#xff1b; 锯齿飞数s&#xff0c;表示山峰到山峰的行数&#xff0c;也就是锯齿的高度。 起始点相差4格&#xff0c;也就是第一部分整体向上移动…

十一、非规则组织分析及其数学模型——芦席斜纹组织

芦席斜纹组织&#xff1a; 该组织是由左斜和右斜有机的结合在一块的&#xff0c;因为其外观酷似芦席故称之为芦席斜纹组织。 织物组织效果&#xff1a; 所需参数&#xff1a; 其基层组织采用双面加强型斜纹&#xff0c;即分子和分母是相同的组织点&#xff0c;例如2上2下(2个经…

LeetCode 18. 四数之和 思考分析(双指针解)

目录需要注意的几点1、去除剪枝操作2、去重操作的细节code以及效果&#xff1a;题目给定一个包含 n 个整数的数组 nums 和一个目标值 target&#xff0c;判断 nums 中是否存在四个元素 a&#xff0c;b&#xff0c;c 和 d &#xff0c;使得 a b c d 的值与 target 相等&#…

图解DotNet框架之一:编译与执行引擎(上)

众所周知,DotNet框架是非常庞大的,光项目创建时的种类就有WPF,WCF,WF这三种最新的技术,还有以前的Web,WinForm,Service,Mobile等等. 这么复杂和庞大的框架,用文字来描述是远远不够的,所以我准备写一系列图文并茂的文章,把我所知道的所有Net框架中的东西全部串联起来,希望可以给…

【Kissy WaterFall】实行手动加载数据

前言&#xff1a;由于Kissy WaterFall默认是监听滚动事件来实现数据动态加载的&#xff0c;但是有一些情况要用到手动加载数据。以下是使用Kissy WaterFall实现手动加载数据的方法。 最终实现效果&#xff1a;点击”逛更多的商店“会动态加载数据 步骤&#xff1a; 当一页数据加…

web服务器文档根目录在哪里,web服务器根目录在哪

web服务器根目录在哪 内容精选换一换SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(访问方式为HTTPS)&#xff0c;实现数据信息在客户端和服务器之间的加密传输&#xff0c;可以防止数据信息的泄露。SSL保证了双方传递信息的安全性&#xff0c;而且用户可以通过…

二、图片加载与保存

一、基本概念 1&#xff0c;什么是图片&#xff1f; 答&#xff1a;图像是结构化存储的数据信息 2&#xff0c;图像的属性 答&#xff1a;1、通道数目&#xff0c;2、宽与高&#xff0c;3、像素数据&#xff0c;4、图像类型 二、加载显示图像并保存 import cv2 import nump…

LeetCode 206. 反转链表 思考分析

题目 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题&#xff1f; 迭代双指针 从某公众号&#xff08;代码随想录&#xff09;搬过来的gif图&…

怎样看虚拟主机的服务器,虚拟主机怎么查看服务器类型

虚拟主机怎么查看服务器类型 内容精选换一换使用华为云提供的公共镜像制作私有镜像时&#xff0c;您需先购买云主机等云资源时镜像选择公共镜像、云服务器类型建议统一选择“s3 (通用计算型)”&#xff0c;在云主机安装部署完商品&#xff0c;然后参照以下方式进行私有镜像制作…

Anaconda自带Python编译器Jupyter Notebook显示代码行数

ESC&#xff1a;进入命令行模式&#xff1b;按下H即可显示各种快捷键信息 Enter&#xff1a;进入编辑模式 方法一&#xff1a;命令方法 一、点击代码段&#xff0c;按ESC&#xff0c;使代码段显示蓝色&#xff0c;进入命令行模式 二、按下ShiftL&#xff0c;显示代码行数 方法…

(转)MOMO的Unity3D研究院之深入理解Unity脚本的执行顺序(六十二)

http://www.xuanyusong.com/archives/2378 Unity是不支持多线程的&#xff0c;也就是说我们必须要在主线程中操作它&#xff0c;可是Unity可以同时创建很多脚本&#xff0c;并且可以分别绑定在不同的游戏对象身上&#xff0c;他们各自都在执行自己的生命周期感觉像是多线程&…

【C、C++基础】什么时候用 “.” 什么时候用“->”(3个实例搞懂)

从堆栈的角度来说&#xff1a; 从堆栈的角度来说&#xff1a; 对象放在堆上&#xff0c;就要用指针&#xff0c;也就是对象指针->函数&#xff1b; 放在栈上,就对象.函数 那么如何判断对象放在堆上还是栈上&#xff1f; 从我的另一篇笔记【C grammar】C简化内存模型可知&am…

三、Numpy数组操作

一、对图片各个像素点的像素值进行操作 image.shape[0]&#xff1a;image图像的height image.shape[1]&#xff1a;image图像的width image.shape[2]&#xff1a;image图像的channels import cv2 import numpy as npdef access_pixels(image):print(image.shape)height imag…

二叉树笔记(深度遍历与广度遍历+13道leetcode题目(深度3道、广度10道))

本文章为结合leetcode题目以及公众号“代码随想录”的文章所做的笔记&#xff01; 感觉代码随想录的题目整理真的很好&#xff0c;比自己盲目刷题好很多。 目录1、二叉树小记1、满二叉树与完全二叉树2、二叉搜索树3、平衡二叉搜索树AVL4、二叉树存储方式5、二叉树遍历方式6、二…

ZZ的计算器

Problem Description ZZ自从上大学以来&#xff0c;脑容量就是以SB计算的&#xff0c;这个吃货竟然连算术运算也不会了&#xff0c;可是当今的计算机可是非常强大的&#xff0c;作为ACMer&#xff0c; 几个简单的算术又算得了什么呢&#xff1f;可是该怎么做呢&#xff1f;ZZ只…

对视频中的特征颜色物体(青色水杯)进行跟踪

方法一&#xff1a;目标物体白色&#xff0c;其余黑色 import cv2 import numpy as npdef extrace_object():capture cv2.VideoCapture("G:/Juptyer_workspace/study/data/yy.mp4")while(True):ret,frame capture.read()if retFalse:breakhsv cv2.cvtColor(frame…