給定一個(gè)排序數(shù)組,你需要在 原地 刪除重復(fù)出現(xiàn)的元素,使得每個(gè)元素只出現(xiàn)一次,返回移除后數(shù)組的新長(zhǎng)度。
不要使用額外的數(shù)組空間,你必須在 原地 修改輸入數(shù)組 并在使用 O(1) 額外空間的條件下完成。
給定數(shù)組 nums = [1,1,2],
函數(shù)應(yīng)該返回新的長(zhǎng)度 2, 并且原數(shù)組 nums 的前兩個(gè)元素被修改為 1, 2。
你不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
給定 nums = [0,0,1,1,1,2,2,3,3,4],
函數(shù)應(yīng)該返回新的長(zhǎng)度 5, 并且原數(shù)組 nums 的前五個(gè)元素被修改為 0, 1, 2, 3, 4。
你不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
function getArrSize(nums){
// 如果數(shù)組長(zhǎng)度小2 直接返回?cái)?shù)組長(zhǎng)度
if(nums.length<2){
return nums.length
}
// 定義一個(gè)不重復(fù)的下標(biāo) 初始值0
let aIndex=0
//循環(huán)給定的數(shù)組 初始值可以定為 1 然后和不重復(fù)的值進(jìn)行比對(duì)
for (let i = 1; i <nums.length; i++) {
//遇到不重復(fù)的時(shí)候 讓不重復(fù)下標(biāo)+1 對(duì)它進(jìn)行更新賦值
if(nums[i]!=nums[aIndex]){
aIndex++;
nums[aIndex]=nums[i]
}
}
//最后一個(gè)不重復(fù)下標(biāo)+1就是新數(shù)組的長(zhǎng)度
return aIndex+1
}
console.log(getArrSize([0,1,2,3,4]))
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array