Remove Element
问题简介:给定数组nums和值val,在适当位置删除该值的所有实例并返回新长度.
注:不要为另一个数组分配额外的空间,必须通过使用O(1)额外内存修改输入数组来实现此目的.
举例:
1.给定数组 = [3,2,2,3], val = 3,
返回值为2,代表有两个不等于val的值,此时数组前两个值应为[2,2]
2:
给定数组 = [0,1,2,2,3,0,4,2], val = 2,
返回值为5,代表有五个不等于val的值,此时数组前两个值应为[0,1,3,0,4]
解法一:设定两个变量,并遍历一遍数组,i表示结果索引即不等于val的个数,j表示遍历的当前索引,当nums[i]!=nums[j]时,i++并赋值nums[j]
![05e34945e1cea19d648d5a188208447d.png](https://i-blog.csdnimg.cn/blog_migrate/8ad4e0f02f6de0ae079d28999618e5b4.jpeg)
复杂度分析
时间复杂度 : O(n)遍历一遍数组
空间复杂度:O(1)定义空间为有限个
解法二:
遍历数组,当前索引值等于val时,将当前索引值与n-1交换,n表示数组长度,每当符合要求时n–1
![a9831f1082a5b092060c826d53049138.png](https://i-blog.csdnimg.cn/blog_migrate/5d4dfbe07eb8f6e0c77fd0e7ca183cd0.jpeg)
复杂度分析
时间复杂度 : O(n)遍历一遍数组
空间复杂度:O(1)定义空间为有限个
小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海
![b6324299a99d9df3ac2b54d3300c7e47.png](https://i-blog.csdnimg.cn/blog_migrate/9752f288caf114716fc0595cd0a56868.jpeg)