重點在審題:
1 排序陣列
2 原地「刪除」重複元素,「刪除」不一定指刪除,可以是替換
3 不需要考慮陣列中超出新長度後面的元素。(返回的是乙個陣列長度,後台根據長度自動擷取)
class solution
return nums.size();}};
本來想借鑑stl原始碼剖析中的一段**,但是失敗了,也不知道錯在**,應該是迭代器的問題。。。。
class solution {
public:
int removeduplicates(vector& nums) {
if(nums.size()<=1)
return nums.size();
int i=0;
for(int j=1;j當nums[i]與nums[j]相等時,就把j自增,否則,我們就找到了不同於nums[i]的第乙個數字,為了保留乙個重複數字,就把i增1,然後被nums[j]覆蓋掉即可。直到j越界。
其實跟第一題滿相似的,但是還是不會遷移。。。
class solution {
public:
int removeelement(vector& nums, int val) {
if(nums.size()==0)
return 0;
int i=0;
for(int j=0;jj是快指標,i是慢指標。當nums[j]不是要刪除的值時,把該值賦給num[i],即覆蓋,i++,當num[j]是要刪除的值,快指標繼續走,直到碰到不是就開始覆蓋。
class solution {
public:
int removeelement(vector& nums, int val) {
if(nums.size()==0)
return 0;
int j=nums.size();
int i;
for(i=0;i遍歷陣列,如果是val,就把val與後面的元素調換位置,為了防止後面的元素也是val,就先不把i增1。這適合val值得個數比較少的情況。
LeetCode 陣列 刪除排序陣列中的重複項
給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。示例 給定 nums 0,0,1,1,1,2,2,3,3,4 函式應該返回新的長度 5,並且原陣列 nu...
Leetcode題解026 刪除排序陣列中的重複項
給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1...
LeetCode 從排序陣列中刪除重複項
給定乙個有序陣列,你需要原地 刪除其中的重複內容,使每個元素只出現一次,並返回新的長度。不要另外定義乙個陣列,您必須通過用 o 1 額外記憶體原地修改輸入的陣列來做到這一點。示例 給定陣列 nums 1,1,2 你的函式應該返回新長度 2,並且原陣列nums的前兩個元素必須是1和2 不需要理會新的陣...