代码随想录算法训练营第一天 || (双指针)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;<