【每日一算法】移除元素
微信改版,加星标不迷路!
每日一算法-移除元素
作者:阿广
阅读目录
? 题目
? 解析
? 完整代码
1 题目
给定一个数组 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]); }
2 解析
思路
既然问题要求我们就地删除给定值的所有元素,我们就必须用 O(1) 的额外空间来处理它。如何解决?我们可以保留两个指针 i 和 j,其中 i 是慢指针,j 是快指针。
算法
当 nums[j]与给定的值相等时,递增 jj 以跳过该元素。只要 nums[j] != val,我们就复制 nums[j] 到 nums[i] 并同时递增两个索引。重复这一过程,直到 j 到达数组的末尾,该数组的新长度为 i。
该解法与 删除排序数组中的重复项 的解法十分相似。
3 完整代码
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int i = 0;
for(int j = 0 ; j < nums.size() ; j++){
if(nums[j] != val){
nums[i] = nums[j];
i++;
}
}
return i;
}
};
4 结果
今日问题
用一个段子解释一个技术,畅所欲言!
打卡格式:打卡第n天,答:...
为什么打卡?戳下面你就知道了!
猛
戳
这
儿
21/天/养/一/个/好/习/惯
【每日一算法】移除元素相关推荐
- c++两个数组对比去掉重复的元素_每日一道 LeetCode (8):删除排序数组中的重复项和移除元素...
❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...
- 代码随想录算法训练营第一天 704 二分查找、27 移除元素
代码随想录算法Day1 | 704. 二分查找.27. 移除元素 Last edited time: April 5, 2023 11:27 AM 数据理论基础 数组是存放在连续内存空间上的相同类型数 ...
- JS算法笔记---移除元素
移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 示例 1: 给定 nums = [3,2,2,3], val = 3, ...
- 代码随想录算法训练营第一天|704二分查找 27移除元素
理论基础 1.数组是存放在连续内存空间上的相同类型数据的集合 2.数组可以方便的通过下标索引的方式获取到下标下对应的数据 3.数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要 ...
- 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
704. 二分查找 题目链接:704. 二分查找 - 力扣(LeetCode) 第一天代码跑题了,做出来了但是没有使用二分法,看了讲解,对于左闭右闭和左闭右开还需要多思考,并没有完全理解.那就先总结一 ...
- 代码随想录算法训练营第一天 | 数组理论基础,704. 二分查找,27. 移除元素
今日学习的文章链接如下: 代码随想录 (programmercarl.com) 代码随想录 (programmercarl.com) 704. 二分查找 自己看到题目的第一想法 拿到题目首先想办法,一 ...
- 移除元素(每日一题)
目录 一.题目描述 二.题目分析 2.1 方法一 2.1.1 思路 2.1.2 代码 2.2 方法二 2.2.1 思路 2.2.2 代码 一.题目描述 题目链接:27. 移除元素 - 力扣(LeetC ...
- 算法第一天——移除元素
常用方法 暴力破解(费时间,效率低) 快慢指针(双指针) 题目 1.移除元素 暴力破解思路: 使用两个for循环嵌套 第一个循环顺序遍历数组 当nums[i]==val 的时候 ,执行第二层循环,将后 ...
- 【代码随想录算法练习】| DAY01 | JavaScript | 数组理论基础,704. 二分查找,27. 移除元素
详细解析:请看Carl老师的讲解 数组基础理论 下标从 0 开始 内存空间地址是连续的 增删元素时,会涉及其他元素地址的变动 704. 二分查找 | 点击查看力扣对应题目 二分法,也叫折半查找法,这里 ...
最新文章
- 改名之后的Java EE,现在有什么新进展?
- 分层和分段用什么符号_如何划分段落层次,如何给段落分层
- Net4.0---VS2010新特性
- 鸿蒙系统画饼,任正非说在三年内华为鸿蒙系统即可媲美苹果!真的不是“画饼”?...
- Ubuntu中Netbeans的中文问题彻底解决
- Android --- Android Device Monitor 在 3.0 版本之后废弃了怎么办
- 瑞幸咖啡生,互联网咖啡生;数据死,互联网咖啡死
- 苹果数据线不能充电_外媒痛批苹果!iPhone 12不送充电器绝非为环保,理由太真实!|充电器|数据线|手机|iphone...
- JavaFX场景切换代码示例
- 郑州升达经贸管理学院计算机科学与技术,郑州升达经贸管理学院计算机科学与技术专业2016年在福建理科高考录取最低分数线...
- java实现Dijkstra算法
- HTTP发包工具 -HTTPie
- 微信小程序转发功能的实现
- 苹果公司的创始人_世界名校巡礼15——苹果公司创始人的母校加州大学伯克利分校...
- 基于STM32HAL库ADS1256调试笔记
- 入手评测AMD锐龙r7 6800u和酷睿i7 1260p选哪个 r76800u和i71260p对比
- Xmind 8 pro 软件破解版(经济条件允许的情况下,请支持正版)
- JavaScript.笔记
- matlab—多行注释
- Python语言学习之关于quote()使用
热门文章
- 新年快到了,让我们一起用 Python 编织中国结吧
- 几经沉浮,人工智能前路何方?
- “崩溃!我再也不搞 AI 了”谷歌 AI 专家:别让你的方法打败你!
- 王海峰发布百度智能云最新架构,推出AI中台和知识中台
- 今晚20:00 | 港科大郑光廷院士详解人工视觉技术发展及应用
- 解读 | 2019年10篇计算机视觉精选论文(上)
- 深度学习会议论文不好找?这个ConfTube网站全都有
- 腾讯AI开源框架Angel 3.0重磅发布:超50万行代码,支持3种算法,打造全栈机器学习平台...
- 掌握哪些机器学习工具更受企业青睐?
- 复旦肖仰华:领域知识图谱落地实践中的问题与对策