27.移除元素
给你一个数组
nums
和一个值val
,你需要 原地 移除所有数值等于val
的元素。元素的顺序可能发生改变。然后返回nums
中与val
不同的元素的数量。假设
nums
中不等于val
的元素数量为k
,要通过此题,您需要执行以下操作:
- 更改
nums
数组,使nums
的前k
个元素包含不等于val
的元素。nums
的其余元素和nums
的大小并不重要。- 返回
k
。
思路:前后两个指针进行交换,因为不需要考虑后面的元素,直接进行覆盖不需要交换
实现:
var removeElement = function(nums, val) {
let left = 0
let right = nums.length - 1
while(left <= right){
if(nums[left] === val){
nums[left] = nums[right]
right--
}else{
left++
}
}
return ++right
}
26.删除有序数组的重复项
给你一个 非严格递增排列 的数组
nums
,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回nums
中唯一元素的个数。考虑
nums
的唯一元素的数量为k
,你需要做以下事情确保你的题解可以被通过:
- 更改数组
nums
,使nums
的前k
个元素包含唯一元素,并按照它们最初在nums
中出现的顺序排列。nums
的其余元素与nums
的大小不重要。- 返回
k
。
思路:双指针,count用于定位要放置的元素下标
实现:
var removeDuplicates = function(nums) {
if(nums.length == 0) return 0
let count = 1
for(let i = 1;i < nums.length;i++){
if(nums[i] != nums[i-1]){
nums[count++] = nums[i]
}
}
return count
};