LeetCode 27. Remove Element

栏目: 编程工具 · 发布时间: 7年前

内容简介:Given an arrayDo not allocate extra space for another array, you must do this byThe order of elements can be changed. It doesn’t matter what you leave beyond the new length.
  • 英文:

Given an array nums and a value val , 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 by modifying the input array in-place with O(1) extra memory.

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

  • 中文:

给定一个数组 nums 和一个值 val ,你需要 原地 移除所有数值等于 val 的元素,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在 原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例

  • 示例 1:
给定 nums = [3,2,2,3], val = 3,

函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。

你不需要考虑数组中超出新长度后面的元素。
  • 示例 2:
给定 nums = [0,1,2,2,3,0,4,2], val = 2,

函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。

注意这五个元素可为任意顺序。

你不需要考虑数组中超出新长度后面的元素。

题解

  • 题解 1

使用两个游标 i 和 j 来遍历数组,如果 第 i 个元素的值等于 val,则使用 j 记录位置,同时递增 i,直到下一个不等于 val 的元素出现,将此时 i 对应的值复制到 j 的位置上,再增加 j ,重复上述过程直到遍历结束。最后,j 就是新数组的长度。

class Solution:
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        j = 0
        for i in range(len(nums)):  # 遍历数组
            if nums[i] != val:  # 不等于时才记录
                nums[j] = nums[i]  # 复制不等于 val 的值
                j += 1  # 新数组的长度
        return j
  • 题解 2

使用列表的 pop() 方法:

class Solution:
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        while val in nums:  # 如果列表中还有目标元素
            nums.pop(nums.index(val))  # 移除该元素
        return len(nums)
  • 题解 3

使用 del 语句:

class Solution:
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        while val in nums:  # 如果列表中还有目标元素
            del nums[nums.index(val)]  # 移除该元素
        return len(nums)
  • 题解 4

使用列表的 remove() 方法(此方法效率最高):

class Solution:
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        while val in nums:  # 如果列表中还有目标元素
            nums.remove(val)  # 移除该元素
        return len(nums)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

创业之初你不可不知的融资知识

创业之初你不可不知的融资知识

桂曙光 / 机械工业出版社 / 2010-6-1 / 48.00元

从零到精通 成功融资必读书 像小说一样好看的趣味融资书 手把手教你找到VC拿到钱 本书以创业者寻找风险投资的逻辑顺序为主线,运用理论分析和实例剖析相结合的手法,将简洁、通俗的语言与丰富的图表工具相结合,辅以中肯的建议,同时运用大量鲜活的、有代表性的成败案例,为读者解读创业之初企业有效成功融资的途径和方法,帮助你的企业开创新的辉煌。一起来看看 《创业之初你不可不知的融资知识》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具