您的位置:首页 > 其它

leetcode_27. Remove Element 不允许创建新列表,直接在列表原地删除指定元素

2016-10-27 19:54 639 查看
题目:

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 in place with constant memory.

The order of elements can be changed. It doesn't matter what you leave beyond the new length.

Example:

Given input array nums = 
[3,2,2,3]
, val = 
3


Your function should return length = 2, with the first two elements of nums being 2.

题意:

给定一个列表,和一个指定的元素,写一个函数,要求不允许创建新的列表,直接删除指定的元素,并返回删除元素后的列表长度,在原始列表中该长度对应的列表为删除元素后的列表内容。

代码:

class Solution(object):

    def removeElement(self, nums, val):

        """

        :type nums: List[int]

        :type val: int

        :rtype: int

        """

        

        indx = 0       #代表非val的元素下标

        for i in range(len(nums)) :       #遍历nums,如果不是val,则将其放在indx下标中,否则,如果为val,则继续遍历

            if nums[i] != val :

                nums[indx] = nums[i]

                indx += 1

        return indx

笔记:

刚开始不懂题目的意思,没有对nums中非val元素进行移动,只统计了非val元素个数,并返回,然后就报错了。

后来发现需要把非val元素移到前面,并返回非val元素个数,然后就通过了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: