python实现。
题目要求: 给定list和一个数值value,要求删除数组中所有与value相同的值,并返回数组长度,并且得到删除value后的新数组。ps:要求不能新建一个数组,空间复杂度为O(1)。
首先讲解一下思路:
假设传入的是nums[]列表,我们需要保留的是与value不相同的数字。所以遇到与value不相同的数字就保存在原列表中,并且列表长度加一就可以(列表初始长度被设为0)。
class Solution(object): def removeElement(self, nums, val): if len(nums) == 0 or nums == None: return 0 index = 0 for num in nums: if num != val: nums[index] = num index += 1 return index sol = Solution() nums = [3, 3] val = 3 print('value = %d'%val) l = sol.removeElement(nums, val) print('len=%d'%l)removeElement 有两个额外输入变量,队列nums和val。返回的index就是最新数组的长度。