美文网首页北美程序员面试干货
LeetCode 27 [Remove Element]

LeetCode 27 [Remove Element]

作者: Jason_Yuan | 来源:发表于2016-08-08 16:54 被阅读30次

原题

给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。
元素的顺序可以改变,并且对新的数组不会有影响。

样例
给出一个数组** [0,4,4,0,0,2,4,4],和值 4
返回 4 并且4个元素的新数组为
[0,0,0,2]**

解题思路

  • 两根指针 - 对撞型指针,一前一后
  • pythonic way

完整代码

# Method 1
class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        l, r = 0, len(nums)-1
        while l <= r:
            if nums[l] == val:
                nums[l], nums[r] = nums[r], nums[l]
                r -= 1
            else:
                l += 1
        return l

# Method 2
class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        while val in nums:
            nums.remove(val)
        return len(nums)

相关文章

网友评论

    本文标题:LeetCode 27 [Remove Element]

    本文链接:https://www.haomeiwen.com/subject/tgsrsttx.html