雙指標 26 刪除排序陣列中的重複項

2022-06-11 21:06:12 字數 1001 閱讀 5035

這道題開始沒思路,但是後來用雙指標的分區域法一思考,基本很快就搞出來了。不過一是有個細節搞錯了,二是還有很多地方可以優化。

p1指向重複區開頭,p2用於遍歷

int lastnum=0;

while(p2

else

else

}else

if(nums[p2]!=lastnum)

else}}

}//應該特判假如p1為-1時

if(p1==-1)

else}}

**開始寫成這樣,第一次錯誤是一直沒有重複項時p1為初值-1。當然有幾個p2++可以提出來。

public

int removeduplicates(int

nums)

q++;

}return p + 1;

}

官方的這種解法當然簡潔很多,但感覺沒有之前那種套路百試不爽。

本人**簡化後:

class

solution

int p1=nums.length,p2=1;//

p1指向重複區開頭,p2用於遍歷。這裡p1初始值設成這個,就不用特判了

int lastnum=nums[0];

while(p2

}else

if(nums[p2]!=lastnum)

}p2++;

}//應該特判假如p1為-1時,這裡第一次搞錯了

return

p1; }}

26 刪除排序陣列中的重複項(雙指標)

給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被...

26 刪除排序陣列中的重複項 陣列 雙指標

給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度2,並且原陣列 nums 的前兩個元素被修改為1,2...

26 刪除排序陣列中的重複

不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1,2。你不需要考慮陣列中超出新長度後面的元素。示例 2 給定 nums 0,0,1,1,1,2,2...