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]
复杂度分析
时间复杂度 : O(n) 遍历一遍数组
空间复杂度: O(1) 定义空间为有限个
解法二:
遍历数组, 当前索引值等于 val 时, 将当前索引值与 n-1 交换, n 表示数组长度, 每当符合要求时 n-1
复杂度分析
时间复杂度 : O(n) 遍历一遍数组
空间复杂度: O(1) 定义空间为有限个
小白刷题之路, 请多指教 - - 要么大器晚成, 要么石沉大海
来源: http://www.bubuko.com/infodetail-3043598.html