美文网首页我爱编程
[数组]27. Remove Element

[数组]27. Remove Element

作者: Reflection_ | 来源:发表于2018-06-11 00:35 被阅读0次

    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]
    

    相关文章

      网友评论

        本文标题:[数组]27. Remove Element

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