P217 移除数组中指定数字
算法 20 阅读
信号摘要
难度:Easy · 时长:05:39 · leetcode 27 · lintcode 172
未对外公开播放权限
点击查看说明
描述
这个题目说的是,给你一个整数数组和一个数字,你要就地(in place)移除数组中等于给定数字的所有元素。然后返回移除指定数字后的子数组长度。
比如说,给你的整数数组是:[1, 4, 2, 0, 2, 8]
你要移除的数字是 2。
在这个数组中就地移除数字 2 后,得到:
[1, 4, 0, 8, _, _]
因此,你要返回这个子数组的长度 4。
原数组的长度是 6,所以子数组 1, 4, 0, 8 后面实际上还有两个位置。但这两个位置上放什么数字都无所谓。因为根据返回的长度 4,就可以确定目标子数组的边界。
相关视频:移除有序数组中的重复元素
代码
public class AlgoCasts {
// Time: O(n), Space: O(1)
public int removeElement(int[] nums, int val) {
if (nums == null || nums.length == 0) return 0;
int p = 0;
for (int q = 0; q < nums.length; ++q)
if (nums[q] != val)
nums[p++] = nums[q];
return p;
}
}