一些感想
今天做力扣的剑指offer专项,从简单的题目开始做。
关于vector数组
以下是vector数组初始化的方法(以int类型数组为例):
- 方法一
vector<int> v(元素数量);
//这样就创建了一个元素数量为“元素数量”的数组,其中每个元素的值都为0;
//这个“元素数量”的值可以是常量也可以是变量
- 方法二
vector<int> v(num,value);
//创建了一个元素数量为“num”的数组,并且每个元素的值都为“value”;
- 方法三
vector<int> v;
//创建了一个空的数组,此方法可通过v.push_back(value)不断向末尾增加元素
- 方法四
vector<int> v1(v2); // 通过拷贝构造函数初始化
以下是计算vector数组有多少元素的方法:
- 方法一
int length=v.size();
注:vector可以随机存储元素,直接访问v[index]即可
剑指 Offer 03. 数组中重复的数字
前言
这个题目很简单,但是解答区用到了我没见过的容器,unordered_map容器。
知识点
首先查询一下什么是map
map是c++标准库中定义的关联容器,用来存储一对一的数据。
使用它要加头文件
第一个数据:关键字(key),每个关键字只能在map中出现一次;
第二个数据:该关键字的值(value);
map特性:map会按照键的顺序从小到大自动排序
有关map的特性,推荐“行码棋”的这篇博文,里面详细介绍了map的函数方法。
C++STL之map详解
接下来就看什么是unordered_map容器,那么就一句话总结吧。
- 可以将 unordered_map 容器等价为无序的 map 容器。
思路
我的思路是暴力求解,此处不再赘述;
解答区中的思路一用哈希表记录数字,鉴于时间复杂度和孔家复杂度和暴力求解一样,我也看作是暴力求解的一种;
最好的一种方法应该是原地交换,但我实在没有看懂。
不过这道题也学到了map这个知识点,那么原地交换就暂时不看了~
再见
今天就先做到这里啦,一共做了两道题,还有一道不算难,而且没有需要注意的知识点,就没再记录。感觉自己做得太慢了,做的内容也太少了,总之继续努力!