LeetCode~移除元素(简单)
2024-08-28 07:56:41
移除元素(简单)
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。
注意这五个元素可为任意顺序。
你不需要考虑数组中超出新长度后面的元素。
2. 个人解题思路
public static int removeElement(int[] nums, int val){
// 初始化指针
int i = nums.length-1;
// 遍历数组
for (int j = nums.length - 1; j >= 0 ; j--) {
// 判断是否等于val
if (nums[j] == val){
// 交换位置
nums[i] = nums[i] + nums[j] - (nums[j] = nums[i]);
// 指针前移
i--;
}
}
return i+1;
}
注:定义了一个指针指向数组中末尾元素,从后往前遍历该数组,判断有与目标符合的元素则与指针索引位置元素交换位置,指针前移一位,该方法可以保证数组数据的完整性
3. 官方解题参考
public static int removeElement(int[] nums, int val){
// 定义指针
int ans = 0;
// 遍历数组
for(int num: nums) {
// 判断是否不等于val
if(num != val) {
// 不等于则后面的元素替换到前面的位置中,等于则等待被替换,替换后指针后移一位
nums[ans++] = num;
}
}
// 返回有效长度
return ans;
}
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
最新文章
- 12月4日PHPCMS模板
- <;九>;JDBC_获取插入记录的主键值
- Sql:多行合并一行以及多条数据取时间最早的那条
- Oracle一些基本操作
- (实用篇)php处理单文件、多文件上传代码分享
- jquery.cookie.js使用介绍
- iOS 分类思想(2)
- HDU 5934 Bomb 【图论缩点】(2016年中国大学生程序设计竞赛(杭州))
- 如何在 CentOS 7 上安装 Redis 服务器
- iOS应用开发:什么是ARC?
- 洛谷 P1896 互不侵犯King
- 协议系列之UDP协议
- PAT1027:Colors In Mars
- Linux之环境搭建(一)
- EffectiveC++ 第2章 构造/析构/赋值运算
- ionic 确认提示操作框
- Bad Hair Day POJ - 3250 (单调栈入门题)
- nginx+python+windows 开始_02
- 【Gym 100015B】Ball Painting(DP染色)
- mysql系列四、mySQL四舍五入函数用法总结