二分法 二分法 二分法作为一种常见的查找算法,其实不单单可以只寻找某一个数。 最基本的二分查找 搜索一个数,如果存在,返回其索引,否则返回 -1。 1234567891011121314151617181920// 搜索一个数int binarySearch(vector<int>& nums, int target) { int left = 0; int ri 2023-04-04 数据结构与算法 #数据结构与算法 #leetcode
并查集 并查集(UNION-FIND) 并查集(Union-Find Set)是一种用来管理和解决集合分组问题的数据结构,它支持两个操作: 查找(Find):查找一个元素属于哪个集合,即找出其所在的连通块。 合并(Union):将两个不相交的集合合并成一个新的集合。 并查集模板 查找(Find):这里用树来表示是否属于同一个数组,使用查找(Find)操作返回的是该节点所在树的根节点,如果一个节点x所在 2023-04-03 数据结构与算法 #数据结构与算法 #leetcode
图算法 图算法 Dijkstra算法 输入是一个图graph,返回是一个最短路径权重的数组。 思路:将dis的初始值出start之外设置为INT_MAX,start设置为0,然后将start加入到优先级队列中,依次将优先级队列中到start距离最小的节点cur弹出,看是否可以更新cur相邻节点next_node的dis值,如果出现下面next_cost < dis[edge.first]的情况,那么 2023-04-03 数据结构与算法 #数据结构与算法 #leetcode
C++ 右值引用 C++ 右值引用 C++11中一个最主要的特性是可以移动而非拷贝对象的能力。我们很多情况下都会发生对象拷贝,而在其中某些情况下,对象拷贝之后就立即背销毁了。这种情况下,移动而非拷贝对象会大幅度提升性能。 在C++11之前,没有直接的方法移动对象。因此,计时不必拷贝对象的情况下,我们也不得不拷贝。如果对象较大,或者是对象本身要求分配内存空间(如string),进行不必要的拷贝代价非常高。 为了支持移 2023-03-30 C++ #C++
C++ explicit用法 explicit关键字 explicit 作用 在 C++中, explicit 关键字用来修饰类的构造函数, 被修饰的构造函数的类, 不能发生相应的隐式类型转换, 只能以显式的方式进行类型转换. explicit 使用注意事项: explicit 关键字只能用于类内部的构造函数声明上; explicit 关键字作用于单个参数的构造函数 (多个参数也适用, 但必须只有一个参数需要赋值, 其他的参 2023-03-13 C++ > Effective C++ #C++ #Effective C++
C++STL优先级队列 C++STL优先级队列 优先级队列是特殊的队列,它与queue的区别在于它可以定义队列中数据的优先级,让优先级高的排在队列前面,可以优先出队,它本质上是由堆实现的。 定义 定义:priority_queue<Type, Container, Functional> Type:数据类型 Container:容器类型(Container必须是用数组实现的容器,比如vector,deque 2023-03-09 C++ #C++ #STL
位运算的妙用 位运算的妙用 异或运算实现变量交换 异或运算可以理解为无进位相加,异或运算的性质如下: 0 ^ N = N N ^ N = N a ^ b = b ^ a (交换律) a ^ b ^ c = a ^ (b ^ c) (结合律) 异或运算的妙用:交换两个数的值不使用额外变量: 12345int a = 17, b = 23;// 交换a,b的值a = a ^ b;b = a ^ b;a = a 2023-03-07 C++ #C++ #位运算
C++deque和queue C++ deque和queue deque是双端队列,queue可以访问两端但是只能修改队头,而deque可以访问两端并且可以在队首和队尾删除和插入元素。 queue操作 12345678queue<int>q; //创建一个int型空队列qq.empty(); // 判断队列是否为空,为空返回trueq.push(s); // 将变量s从队尾入队q.pop(); // 将队 2023-03-07 C++ #C++
C++函数后冒号的含义 C++函数后冒号的含义 c++ 函数后面加一个冒号的含义 冒号后面跟的是赋值,这种写法是C++的特性 123A( int aa, int bb ):a(aa),b(bb){} 等价于 12345A( int aa, int bb ){ a=aa; b=bb;} C++构造函数后面的冒号 在C++类的构造函数中经常会看到如下格式的写法: 1MyWi 2023-03-06 C++ #C++
C++常量、#define、const和constexpr C++常量、#define、const和constexpr 常量 常量是固定值,在程序执行期间不会改变,可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值,常量的值在定义后不能进行修改; 可以使用枚举、#define、const和constexpr等方法定义常量. #define #define是预处理阶段进行处理,是一种宏定义,所以定义常量的宏是没有类型的,是在编译前即预编 2023-03-06 C++ #C++