代碼隨想錄算法訓練營第一天 || (雙指針)27.移除元素 26.刪除有序數組中的重復項 283.移動零
- 27.移除元素
-
- 暴力方法
- 同向雙指針雙指針
-
- 自己AC的解答
- 卡哥的講解
- 26.刪除有序數組中的重復項
-
- 同向雙指針
- 283.移動零
-
- 自己解答
- 靈神做法(同向雙指針+交換)
- 977.有序數組的平方
-
- 暴力排序
- 相向雙指針
27.移除元素
文檔講解:移除元素
視頻講解:數組中移除元素并不容易
狀態:聽完思路,自己成功實現代碼
暴力方法
數組中移除元素是通過覆蓋的方式進行的,而不是直接刪除
本題,我們先采用暴力方法進行解答:
class Solution {
public:int removeElement(vector<int>& nums, int val) {int n = nums.size();for (int i = 0; i < n; i++) {if (nums[i] == val) {for (int j = i + 1; j < n; j++) {nums[j - 1] = nums[j];}i--;n--;}}return n;}
};
暴力方法時間復雜度是O(n^2),空間復雜度是O(1)
同向雙指針雙指針
就是用一層循環來解決暴力法兩層循環
自己AC的解答
class Solution {
public:int removeElement(vector<int>& nums, int val) {int n = nums.size();int fast, slow = 0;for (fast = 0; fast < n; fast++) {if (nums[fast] == val) {continue;<