一、题目
Given an array and a value, remove all instances of that value in-place and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
不借助新的空间,删除给定数组中的与给定的 val 相同的元素,返回新数组的长度,新数组的末尾是什么不关心。
二、思路
首先不考虑鲁棒性,定义两个指针,其中一个指针遍历整个数组,另外一个指针负责计数即当前数组元素不等于给定 val 时做加 1操作 ,同时将该元素前移。大的考虑就这些。
三、代码
#coding:utf-8 def removeElement(nums, val): """ :type nums: List[int] :type val: int :rtype: int """ numslenth = len(nums) j=0 # if numslenth == 0: # return 0 # if numslenth == 1 and val == nums[0] : # return 0 # if numslenth == 1 and val != nums[0] : # return 1 for i in range(0,numslenth): if nums[i] != val: nums[j] = nums[i] j += 1 print(j," ",nums) return j if __name__ == '__main__': nums = [5] val = 3 removeElement(nums,val)