Leetcode(二) 移除元素

题目描述:

给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

解题思路:

因为在删除元素的过程中,数组的长度一直在改变,所以需要使用while遍历比较合适,用for循环的话,遍历的索引值不方便控制其根据list长度变化而跟着变化。

class Solution:
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        i = 0
        l = len(nums)
        if l == 0:
            return 0
        else:
            while i < l:
                if nums[i] == val:
                    nums.remove(nums[i])   #数组的长度会发生改变
                    l -= 1
                else:
                    i += 1
            return len(nums)
                    

猜你喜欢

转载自blog.csdn.net/guoyang768/article/details/84783011
今日推荐