題目描述:
給定乙個排序陣列,你需要在原地
刪除重複出現的元素,使得每個元素最多出現兩次,返回移除後陣列的新長度。
不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o(1) 額外空間的條件下完成。
示例 1:
給定 nums = [1,1,1,2,2,3],示例 2:函式應返回新長度 length =
5
, 並且原陣列的前五個元素被修改為1, 1, 2, 2,
3 。你不需要考慮陣列中超出新長度後面的元素。
給定 nums = [0,0,1,1,1,1,2,3,3],說明:函式應返回新長度 length =
7
, 並且原陣列的前五個元素被修改為0
, 0, 1, 1, 2, 3, 3 。你不需要考慮陣列中超出新長度後面的元素。
為什麼返回數值是整數,但輸出的答案是陣列呢?
請注意,輸入陣列是以「引用」方式傳遞的,這意味著在函式裡修改輸入陣列對於呼叫者是可見的。
你可以想象內部操作如下:
// nums 是以「引用」方式傳遞的。也就是說,不對實參做任何拷貝**:int len = removeduplicates(nums);
// 在函式裡修改輸入陣列對於呼叫者是可見的。
// 根據你的函式返回的長度, 它會列印出陣列中該長度範圍內的所有元素。
for (int i = 0; i < len; i++)
class solution {
public:
int removeduplicates(vector& nums) {
int len=nums.size();
if(len<3) return len;
int pos=2;
for(int i=2;i總結:一開始的錯誤,將判斷是否與前兩位相等的條件寫成nums[i]和nums[i-2]比較,但是需要比較的是當前確定位的前兩位,所以要用pos。
leetcode 80刪除排序陣列中重複的元素
思路就是設定乙個標記數 比如說 1 1 1 2 2 3 起初把標記數設為1 然後新陣列的下標設為index 0 這個新陣列不是說重新又建了乙個陣列而是說把符合條件的數再重新存入這個陣列 然後從0位置遍歷陣列如果這個數為1 即為當前的標記數 並且num num是標記數出現的次數 2 即這個數還未出現兩...
刪除陣列中的重複項 leetcode
給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1...
LeetCode80 公平的糖果交換 單調數列
愛麗絲和鮑勃有不同大小的糖果棒 a i 是愛麗絲擁有的第 i 根糖果棒的大小,b j 是鮑勃擁有的第 j 根糖果棒的大小。因為他們是朋友,所以他們想交換一根糖果棒,這樣交換後,他們都有相同的糖果總量。乙個人擁有的糖果總量是他們擁有的糖果棒大小的總和。返回乙個整數陣列 ans,其中 ans 0 是愛麗...