Remove Element

输入一个整型数组nums和一个整型数val,要求删除数组中值为val的元素并将删除后的该数组长度返回
要求程序占用的空间复杂度为O(1)。

eg.
Given nums = [3,2,2,3], val = 3,
Your function should return length = 2, with the first two elements of nums being 2.
It doesn’t matter what you leave beyond the returned length.

思路:已经限定了空间复杂度为O(1),就意味着实现过程中不能用创建新的数组来记录过滤的结果;首先遍历了下数组,记录数组元素值为val的索引保存成一个索引队列,然后遍历索引队列,使用pop内建方法来对输入数组进行操作。

附上python代码

class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        
        index_list = []
        for i in xrange(len(nums)):
            if nums[i] == val:
                index_list.append(i)
        count = 0
        for index in index_list:
            nums.pop(index-count)
            count += 1
        return len(nums)

运行了下,竟然Accepted了。
思考:其实要求程序空间复杂度为O(1),但是上述代码在实现时新建的索引队列的空间复杂度为O(m)毕竟,居然能通过leecode评判也不可思议了。还是其实对复杂度理解有出处,其实O(m)~O(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值