Leetcode刷题记(9)——移除元素
勤劳的搬运工!
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
示例 1:
给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。
解题思路:这道题和上道题简直是一模一样呀!唯一的区别就是这个不再是直接删除数组中重复的,而是要将数组中和指定数字相同的删除,但是还是完全可以利用上一题的思想!
依旧直接使用快慢指针!!!我大概是脑子瓦特了,让快指针从后向前遍历,然后慢指针从前向后,可怕的是跑几个测试用例跑过了,以为没问题了,果然提交的时候失败了。
看提交后的测试用例,自己手动跑码竟然跑了好几遍觉得没有错,后来才发现这样一来会把数组的原元素破坏掉啊,这样再用快指针遍历的时候前面的元素已经被替换了!!!
真的是脑子瓦特了,然后本来一道可以直接用上一题代码的竟然花了好久,还好发现了这个错误,马上改过来了,最后提交竟然超过了100%的用户。