我爱编程

[数组]27. Remove Element

2018-06-11  本文已影响0人  Reflection_

27. Remove Element

给定一个数组nums和一个val值,在nums中就地移除该val的所有并返回新的长度。 不要为其他数组分配额外空间,必须通过在O(1)额外内存中就地修改输入数组来实现此目的。
元素的顺序可以改变。

在nums新的长度以后留下的数字并没有关系。 比如长度为2,则nums[2]及以后的并不重要

JAVA 15ms

class Solution {
    public int removeElement(int[] nums, int val) {
        int count = 0;       
        for(int i = 0 ; i< nums.length; i++){
            if(val != nums[i]){
                nums[count++] = nums[i];
            }
        }
        return count;
    }
}

Python 38ms

class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        count = 0
        for i in range(len(nums)):
            if (val != nums[i]):
                nums[count] = nums[i] 
                count += 1
        return count

另一种python更快解法,直接利用list 的del特性

注:list del是根据索引位置来删除元素
比如
a = [3,2,2,1]
del a[1,3]
print a
结果[3]

a[::-1]用法:翻转list

class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        
        for i in range(len(nums))[::-1]: # a[::-1]翻转,即i为倒序
            if nums[i] == val:
                del nums[i]
上一篇 下一篇

猜你喜欢

热点阅读