力扣每日一题Day02
事情不是足以改变世界才算重要。
题目描述:
给你一个数组 nums
和一个值 val
,你需要 原地 移除所有数值等于 val
的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1)
额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
解题代码:
1 | class Solution { |
解读与收获:
这道题我的思路是如果当前下标指向的元素数值等于val,那就将他和后面一个不为val的数交换,直到所有等于val的数交换到数组尾部,然后再返回实际长度就可以了。其中我设置了一个变量n,初始化为1,代表如果遇到等于val的数,就看他后面1位是不是也等于val,如果不是直接交换,如果是就将n++,代表之后会看后面第2位是否是val,n的值是永久改变的,因为按照该算法如果出现了两个或以上val连在一起的情况,如果不改变n的值,会导致val值之间换来换去,同时我加了一个判断标志,如果当前下标加上n的值超过了数组长度,那就说明下标后所有的值都是val,这时只要返回下标值(因为下标比实际长度少1),就等于数组最终长度。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 驴の奇思妙想!
评论