27。RemoveelementTitle来源:https://leetcode-cn.com/problems/remove-elementTitle给你一个数组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。请注意,这五个元素可以按任意顺序排列。您不需要考虑数组中超出新长度的元素。解题思路:双指针复习,本题要求是【不使用额外的数组空间】。其实这道题的解法和LeetCode26.删除排序数组中的重复项非常相似。定义双指针,front,tail。当nums[front]的值等于给定val的值时,front指针向前移动,跳过该元素。如果不相等,则将nums[front]的值复制到nums[tail],然后两个指针同时向前移动。循环重复这个过程,但是当front到达末尾时,返回一个长度为tail的新数组。具体过程见下图:具体代码如下。代码实现类解决方案:defremoveElement(self,nums:List[int],val:int)->int:#定义双指针front=0tail=0#遍历数组whilefront
