[数组]27. Remove Element

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]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 3,480评论 1 24
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,616评论 1 118
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,768评论 0 33
  • 创业有很多事需要做,需要执行力。为什么需要执行力呢?因为创业会遇到许多的问题:1.资金量不足,创业就是本身没有这个...
    益慧道阅读 462评论 0 0
  • OpenResty官方网站 OpenResty简介 OpenResty ™ 是一个基于 Nginx 与 Lua 的...
    qlaiaqu阅读 1,973评论 0 3