给定一个排序数组,你需要在原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组 **并在使用 O(1) 额外空间的条件下完成。
示例 1:
给定数组 nums = [1,1,2],
函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。
你不需要考虑数组中超出新长度后面的元素。
示例 2:
给定 nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
你不需要考虑数组中超出新长度后面的元素。
使用javascript编写 :
var removeDuplicates = function(nums) {
if(nums === [] || nums.length === 1){//判定数组为空和只有一个元素的情况。
return nums.length;
}
let temp = nums[0];//定义初始比较元素
let k = 1;//定义下标,因为是从初始比较元素后一个开始定义,所以定义为1
for(let j = 0;j<nums.length;j++){
if(temp != nums[j]) {//如果不相等就使用nums[j]去比较
temp = nums[j];//重新选定比较元素
nums[k] = nums[j];//将不同的元素一次记录
k++;//更新下标
}
}
return k
};
总结
首先,这个是个排序数组!排序数组!排序数组!我一开始还加了一个排序,后面再读题发现是有序数组。所以读题还是要仔细呀。定义了初始比较的元素还有后一位的下标,循环数组,如果初始比较元素不等于后一位的元素就将后一位元素添加到初始比较元素后,并改变比较元素,并更新后一位的下标。最后返回数组长度。
网友评论