报错的解决
vector不是模板问题,
第一是由于没有添加#include <vector>。
第二是需要添加命名空间。命名空间添加有两种,
第一是直接在vector前面加上std::,
第二是开头加入using namespace std;
加入vector后,std命名空间没有vector的问题--C++ 版本问题
其他
快慢下标 快慢指针(下标)法 链表的节点的地址
同向指针、对向指针、快慢指针等
三个指针,分别是快指针、慢指针、慢指针的前一个指针
临时数组
数组移位
快慢指针:一快一慢两个指针来遍历数据对象并解决问题
有序数据去重
没有元素或者仅有一个元素 --直接返回
大于1个元素: 引入一个下标变量 index 和单个下标 i
审题: 把数组中不重复的元素都存到前面来,要把前面重复的元素用后面不重复的元素覆盖掉,
至于后面的元素存的是什么不用管,
思路:这里可以用设置 快慢针 来解决--快慢下标
代码示例
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int n = nums.size();
if(n == 0 || n == 1)
return n;
int index=0;
int i = 1;
while(i<n)
{
if(nums[index] != nums[i])
{
index++;
nums[index] = nums[i];
}
i++;
}
return index+1;
}
};
int main(){
vector<int> nums = {7,3,3,1,2}
Solution solution;
int result = solution.removeDuplicates(nums);
std::vector<int>::const_iterator start = nums.begin();
std::vector<int>::const_iterator end = nums.begin()+result;
std::vector<int> cut_vector(start,end);
for(int elem: cut_vector){
std::cout << "num_element" << elem <<endl;
}
}
应用场景
删除-去重-过滤-保留-移除等--时序-排序
过滤重复图像--筛选出典型数据,前后比较的方式
通过图像计算的相似性,两两比较--快慢下标的方式
派生类
派生类对象 可以赋值给
基类的对象 / 基类的指针 / 基类的引用。
这里有个形象的说法叫切片或者切 割。寓意把派生类中父类那部分切来赋值过去。
const_iterator的正向常量迭代器,该类型迭代器只能用于读取容器内的元素,但不能改变其值。
对const_iterator类型解引用,得到的是一个指向const对象的引用
作为一个迭代器,遍历元素是必须要的,不然就丧失了一个迭代器的意义了
const_iteartor代表的就是不能改变容器元素,但是可以遍历容器的迭代器。
滑动窗口法
双下标或者双指针--
递归-迭代的思想
参考
兜兜的乐扣刷题算法小记 https://blog.csdn.net/aishuirenjia/article/details/120422328
https://jaemon.blog.csdn.net/article/details/116456482