给你一个数组 nums
和一个值 val
,你需要 原地 移除所有数值等于 val
的元素。元素的顺序可能发生改变。然后返回 nums
中与 val
不同的元素的数量。
假设 nums
中不等于 val
的元素数量为 k
,要通过此题,您需要执行以下操作:
-
更改
nums
数组,使nums
的前k
个元素包含不等于val
的元素。 -
nums
的其余元素和nums
的大小并不重要,返回k
。
示例 1:
输入:nums = [3,2,2,3], val = 3 输出:2, nums = [2,2,_,_] 解释:你的函数函数应该返回 k = 2, 并且 nums 中的前两个元素均为 2。 你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。
示例 2:
输入:nums = [0,1,2,2,3,0,4,2], val = 2 输出:5, nums = [0,1,4,0,3,_,_,_] 解释:你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。 注意这五个元素可以任意顺序返回。 你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。
提示:
-
0 <= nums.length <= 100
-
0 <= nums[i] <= 50
-
0 <= val <= 100
思路:我想的是创建一个空的数组,不是目标值就赋值给新数组即可,空间复杂度O(1),时间复杂度O(n)。过啦!
class Solution {
public int removeElement(int[] nums, int val) {
int length = nums.length;
int tem = 0;
for (int i = 0; i < length; i++) {
// 和目标值相同就不放入数组
if (nums[i] != val){
nums[tem++] = nums[i];
}
}
return tem;
}
}
总结:这个题目就很简单,一下子就做了出来,优化了一下,不需要新创建一个数组,利用原有数组即可,利用一切可以利用的资源yyds!!!
ending:闻道有先后,术业有专攻,悟已往之不谏,知来者之可追,如是而已!
标签:返回,val,nums,int,元素,数组,移除,LeetCode,刷题 From: https://blog.csdn.net/m0_46224501/article/details/143187291