20210509力扣第27题移除元素

本文介绍了一道力扣(LeetCode)上的编程题,要求在O(1)额外空间复杂度下,原地移除数组中所有等于特定值的元素。作者分享了自己的解题思路,包括尝试转化为List进行删除但不符合空间要求,然后转向使用自加方法占据空间以解决题目限制。总结中强调了解题关键是不能使用额外空间,需找到不重复元素替换被移除的元素,最后返回移除后的数组长度。
摘要由CSDN通过智能技术生成

1.题目

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

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

	输入:nums = [3,2,2,3], val = 3
    输出:2, nums = [2,2]
    解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。
    你不需要考虑数组中超出新长度后面的元素。
    例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或nums = [2,2,0,0],也会被视作正确答案。


	输入:nums = [0,1,2,2,3,0,4,2], val = 2
	输出:5, nums = [0,1,4,0,3]
	解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。

文章目录


2.思路

自己的想法是把他们转成List,再用list.remove删除元素,但是,题目却给了只有O(1)的空间复杂度,自己在做的时候,也写了代码,但是有一点点问题。

其中if(list.get(i)==val) 一直提示转换失败,我猜想是题目要求只能使用O(1)复杂度,所以这里一直失败。

List<Integer> list = new ArrayList(Arrays.asList(nums));
        for(int i 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值