算法题丨Remove Element
2024-08-31 05:48:16
描述
Given an array and a value, remove all instances of that value in-place and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
示例
Given nums = [3,2,2,3], val = 3, Your function should return length = 2,
with the first two elements of nums being 2.
算法分析
难度:低
分析:给定数组和指定一个目标值,从数组中移除所有跟目标值相等的元素,返回最终元素的长度,注意不要另外分配内存空间。
思路:题目很简单,直接遍历数组元素,判断当前元素是否跟目标值相等,如果不相等,证明当前元素应该留在数组中,有效数组长度自增1,否则为无效元素,因为只需返回有效数组长度,所以不用删除元素,跳过此循环即可。
代码示例(C#)
public int RemoveElement(int[] nums, int val)
{
int i = 0;
for (int j = 0; j < nums.Length; j++)
{
//如果不相等,有效长度自增1
if (nums[j] != val)
{
nums[i] = nums[j];
i++;
}
}
return i;
}
复杂度
- 时间复杂度:O (n).
- 空间复杂度:O (1).
附录
- 系列目录索引
- 代码实现(C#版)
- 相关算法:Move Zeroes
最新文章
- EF查询之性能优化技巧
- (分享)多功能 PDF转换器v3.0版本
- SlipHover,能感知鼠标方向的图片遮罩效果jQuery插件
- JavaScript Patterns 5.5 Sandbox Pattern
- PacBio全基因组测序和组装
- JSON API in Javascript
- 自定义控件(视图)2期笔记05:自定义控件之继承自View(滑动开关)
- JAVA classpath, 纠正我一直以来错误的认知
- BufferedReader的ready与readLine使用,以及Premature EOF异常
- C# 笔试题,看你会几道题
- docker certificates
- js原生设计模式——9外观模式封装
- tyvj4877 组合数
- [LeetCode] Random Flip Matrix 随机翻转矩阵
- Dear ImGUI 使用指南
- EXCEL 如何实现下拉填充公式,保持公式部分内容不变,使用绝对引用
- 7_linux用户及权限(2)和管理
- DTO的问题
- mysql 命令行 备份 恢复数据
- python(五)——运算符