Leetcode217.存在重复元素

题解

class Solution {
public:
    bool containsDuplicate(vector& nums) {
    unordered_set m;
    for(int i=0;i

笔记

1.vector

        vector表示可变大小数组的序列容器,vector可使用size()获取长度,int型数组只可使用sizeof()获取长度。

头文件

#include

定义vector

vectornums;
vectornums(10);//固定vector的大小

//定义二维vector
vector > nums(m ,vector(n));    //直接定义m*n的二维vector
//或定义并初始化二维vector
vector > nums(m ,vector(n,0));    //m*n的二维vector,所有元素为0
//或
vector > nums;
nums.resize(m);
for(int i=0;i > nums;
nums.resize(m,vector(n));

添加元素

nums.push_back(1);//直接从数组末端添加
nums[i] = 1;//直接赋值给第i个位置

删除元素

nums.resize(nums.size-i); //直接将数组长度减小,某种方式上删掉了后面i个
nums.pop_back();//删掉最后一个元素
nums.erase(nums.begin(),nums.end()); ///nums.erase()可以删除一个或多个元素

遍历数组

//一维
for(int i = 0; i < nums.size(); i++){
    cout<

获取数组长度

//一维
nums.size();
//二维
nums.size();//获得二维数组的行数
nums[0].size()//获得二维数组的列数

排序

sort(nums.begin(),nums.end());

翻转

reverse(nums.begin(),nums.end());

合并两个vector

vector nums1(m),nums2(n);
vector nums;
nums.resize(m+n);
merge(nums1.begin(), nums1.end(),nums2.begin(),nums2.end(),nums);//合并nums1和nums2,并将合并后的数组赋值给nums

清空容器

nums.clear();//清空nums中的元素

2.unordered_set 无序集

①unordered_set是不按特定顺序存储键值的关联式容器,其允许通过键值快速的索引到对应的元素。
②在unordered_set中,元素的值同时也是唯一地标识它的key。
③在内部,unordered_set中的元素没有按照任何特定的顺序排序,为了能在常数范围内找到指定的key,unordered_set将相同哈希值的键值放在相同的桶中。
④unordered_set容器通过key访问单个元素要比set快,但它通常在遍历元素子集的范围迭代方面效率较低。
⑤它的迭代器至少是前向迭代器。(单向)

头文件

#include 

常用的构造方式

unordered_set set1;//创建空set
unordered_set set2(set1);//拷贝构造
unordered_set set4(arr,arr+5);//使用数组作为其初值进行构造

常用函数

set1.empty();//判断是否为空-若空返回true,否则false

set1.find(2);//查找-查找2,找到返回迭代器,失败返回end()

set1.count(2);//出现次数-返回指2出现的次数,0或1

set1.insert(3);//插入元素
set1.insert({1,2,3});//插入元素-使用initializer_list插入元素
set1.insert(set1.end(), 4);//插入元素-指定插入位置,如果位置正确会减少插入时间,返回指向插入元素的迭代器
set1.insert(set2.begin(), set2.end());//插入元素-使用范围迭代器插入
set1.emplace(3);//插入元素-使用转移构造函数添加新元素3,比insert效率高


set1.erase(1);//删除操作-成功返回1,失败返回0
set1.erase(set1.find(1));//删除操作-成功返回下一个pair的迭代器
set1.erase(set1.begin(), set1.end());//删除操作-删除set1的所有元素,返回指向end的迭代器

set1.clear();//清空

你可能感兴趣的:(leetcode,leetcode,算法,c++)