力扣刷題 移動元素

2021-10-24 03:35:02 字數 1734 閱讀 1383

這道題看到之後有兩種思路。

1、第一種思路其實很簡單,就是遍歷陣列中的元素,將其與目標值進行比較看是否相等,若相等的話,我們可以通過c++中的erase()函式對其進行刪除。

class

solution

}return nums.

size()

;}};

2、第二種方法是我們可以對原陣列進行覆蓋(說成覆蓋不知道對不對,哈哈)

方案一:對陣列元素進行遍歷,刪除重複的元素。

class

solution

}return nums.

size()

;}};

方案二:使用快慢指標法。慢指標slow_index是已經更新後陣列的指標, 快指標fast_index遍歷原始陣列,判斷要不要某個元素。

class

solution

}return slow_index+1;}};

第一種做法:首先我們要清楚,陣列中的元素最多只能出現2次,需要把多餘重複的元素給刪除,所以我們可以讓陣列中的第3個元素與陣列的第1個元素進行比較,如果相同的話,把第三個元素刪除此時陣列的長度會減1,然後在讓新的第三個元素與第乙個元素進行比較。

class

solution

}return nums.

size()

;}};

第二種做法:快慢指標,由於是排序好的陣列,所以快慢指標法可以使用。

class

solution

int slow_index=1;

for(

int fast_index=

2;fast_index

size()

;fast_index++)}

return slow_index+1;}};

第一種方案:

這道題的思路很簡單,主要分為兩部分。

1、首先遍歷原陣列,將陣列中的非零元素統統賦值給nums[k],k的值記錄了非零元素的個數。

2、需要第二次遍歷陣列,將零元素賦值給陣列的最後面。

class

solution

}for

(int i=k;i

};

第二種方案:一次遍歷即可,把不等於零的元素全放在陣列左邊。

class

solution}}

};

這時我們可以在進一步對這個演算法進行優化,假如所給的陣列全為正數時,方案二仍需要對陣列的元素進行交替賦值。

class

solution}}

};

刷題筆記 力扣283 移動零

獲得的思考 獲得的思考 給定乙個陣列nums,編寫乙個函式將所有0移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0 1,0 3,12 輸出 1 3,12 0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。思路 先統計容器中0的個數,刪掉所有的零,並在結尾補零 cla...

力扣刷題系列

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。從中學知識知道,如果需要求一組數字的中位數,那麼先要從小到大排列這些數字。接著,如果總共有奇數個...

刷題 力扣 119

題目鏈結 題目描述 給定乙個非負索引 k,其中 k 33,返回楊輝三角的第 k 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 3 輸出 1,3,3,1 高階 題目分析 根據題目描述楊輝三角形每一行從左到右依次是 組合 combiner是用來計算組合的結果 依次遍歷每一行從左到右 c...