80.刪除排序陣列中的重複項ii
難度:中等
標籤:雙指標
給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素最多出現兩次,返回移除後陣列的新長度。
不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o(1) 額外空間的條件下完成。
示例 1:
給定 nums = [1,1,1,2,2,3],
函式應返回新長度 length = 5, 並且原陣列的前五個元素被修改為 1, 1, 2, 2, 3 。
你不需要考慮陣列中超出新長度後面的元素。
示例 2:
給定 nums = [0,0,1,1,1,1,2,3,3],
函式應返回新長度 length = 7, 並且原陣列的前五個元素被修改為 0, 0, 1, 1, 2, 3, 3 。
你不需要考慮陣列中超出新長度後面的元素。
思路:這裡我覺得可以擴充套件一下,如果題目要求每個元素最多出現k次**怎麼寫。
index:定義index表示不重複元素集合的右邊界.用數學公式表示即[0,index)表示修改後的陣列,因為左閉右開,所以index取不到
其實就是對於指標運動條件的考量,什麼時候需要移動index指標?
1.nums[i] != nums[index] 表示當前遍歷的位置i和不重複集合的右邊界不一樣,那麼肯定能放入不重複集合了。
2.題目要求每個元素最多出現k次,那麼如果nums[i] != nums[index-k+1] 就可以保證不會存在連續的k個元素是值是重複的。
public
intremoveduplicates
(int
nums,
int k)
}// 4.判斷返回值
return index +1;
}
力扣題 刪除排序陣列中的重複項
給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1...
力扣 刪除排序陣列中的重複項
給定乙個排序陣列,需要在原地刪除重複出現的元素,使得每個元素只出現一起,返回移除陣列的新長度。不要使用額外的陣列空間,必須在原地修改輸入陣列,並在使用o 1 額外空間的條件下完成。1.在實現過程中不能使用新的陣列 2.需要返回的實質就是所有不重複元素的總和 s 並且需要將陣列的前面等於 s 1 位置...
力扣第922題 按奇偶排序陣列 II
給定乙個非負整數陣列 a,a 中一半整數是奇數,一半整數是偶數。對陣列進行排序,以便當 a i 為奇數時,i 也是奇數 當 a i 為偶數時,i 也是偶數。你可以返回任何滿足上述條件的陣列作為答案。示例 輸入 4,2,5,7 輸出 4,5,2,7 解釋 4,7,2,5 2,5,4,7 2,7,4,5...