27.给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
26.给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
==========Python=============
class Solution: def removeElement(self, nums: List[int], val: int) -> int: j = 0 for i in range(len(nums)): if nums[i] != val: nums[j] = nums[i] j += 1 return j
============Go==============
func removeElement(nums []int, val int) int { j := 0 for i := 0; i < len(nums); i++{ if nums[i] != val{ nums[j] = nums[i] j ++ } } return j } --------------- func removeElement(nums []int, val int) int { for i := 0; i < len(nums); { if nums[i] == val { nums = append(nums[:i], nums[i+1:]...) } else { i++ } } return len(nums) }
===============Java==============
class Solution { public int removeElement(int[] nums, int val) { int j = 0; for (int i = 0; i < nums.length; i++){ if (nums[i] != val) { nums[j] = nums[i]; j ++; } } return j; } }