leetcode[27]-移除元素

题目

给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

python代码

class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        len_nums = len(nums)
        if len_nums==0:
            return 0
        i=0
        for j in xrange(len_nums):
            if nums[j]==val:
                if j==len_nums-1:
                    return i
                continue
            else:
                nums[i]=nums[j]
                i+=1
        return i

这道题目仍是考察编程能力,思路很简单很直观。

len_nums = len(nums)
if len_nums==0:
    return 0

老样子,先把特殊情况搞定。

i=0
for j in xrange(len_nums):
    if nums[j]==val:
        if j==len_nums-1:
            return i
        continue
    else:
        nums[i]=nums[j]
        i+=1

继续运用快慢指针,这类题目让你就地进行操作的,感觉快慢指针是首选的方法。

发表评论

电子邮件地址不会被公开。