C/C++
C/C++总结
猜猜我是谁.+
Code changes me, code changes us.
展开
-
编译原理总结
1、字母表,是一个有穷符号集合。符号:字母、数字、标点符号 字母表上的运算,字母表的乘积:也是集合,即连接在一起。 字母表的n次幂:n次连接,0次幂:即只有一个空串的集合:{} 字母表的正闭包:长度为1的字符串集合 并上 长度为2的字符串集合 并上 长度为3的字符串集合.... 字母表的克林闭包,在正闭包的基础上添加一个空串 闭包中的一个元素称为串,串s的长度,通常记作|s|,指s中的符号的个数,空串的长度为0 串上的运算: 连接: x是串,y是串,xy就是把y加到x的后面,空串是连接运算的原创 2022-05-15 01:36:03 · 1126 阅读 · 0 评论 -
算法模板(初级)
双指针(双向指针、快慢指针(滑动窗口)) //快慢指针 int slowIndex = 0; for(int fastIndex = 0; fastIndex < nums.size();i++) { if(nums[fastIndex]满足某个条件){ nums[slowIndex++] = nums[fastIndex]; } } //双向指针 for(int i = 0, j = nums.size()-1; i < j; i++, j--) { }原创 2022-04-20 00:41:15 · 1111 阅读 · 0 评论 -
C++ string总结
//1、初始化 string str = "123456"; 或者string str("123456"); //2、截取子串 str.sub(起始索引,子串长度); str.sub(起始索引); //从索引处到字符串末尾 Returns a substring [pos, pos+count). If the requested substring extends past the end of the string, or if count == npos, the returned substrin.原创 2022-04-09 23:52:18 · 507 阅读 · 0 评论 -
leetcode 31 下一个排列
力扣 整数数组的一个排列 就是将其所有成员以序列或线性顺序排列。 例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。 例如,arr原创 2022-04-08 20:11:00 · 56 阅读 · 0 评论 -
Leetcode刷题记录与总结
1、图 1.1 单源最短路径 最短路径问题---Dijkstra算法详解_Ouyang_Lianjun的博客-CSDN博客_dijkstra Dijkstra:每次找出距离原点最小的dis,然后去更新周围的点的dis。找最小dis,松弛。 松弛操作:for(每个相连的点) if(dis[i]+w[i][j] < dis[j]) dis[j] = dis[i]+w[i][j]; 万物皆可映射:unordered_map<万物,映射的类型> map; unordered_map<原创 2022-04-07 20:06:29 · 48 阅读 · 0 评论 -
归并排序和逆序对问题
//归并排序的代码 void mergeSort(int left, int right, vector<int>& nums, vector<int>& temp){ if(left >= right) return; int mid = left + (right - left >> 1); mergeSort(left, mid, nums, temp); mergeSort(mid + 1, right, .原创 2022-03-18 14:39:03 · 52 阅读 · 0 评论 -
对哈希表unordered_map的总结
1、定义一个哈希表 unordered_map<typenameA,typenameB> hash; 2、CRUD // 增 hash[key] = value; //删 hash.erase(key); // 如果没有找到会返回0 //改 hash[key] = new value; //查 hash.find(key); // 常用hash.find(key) == hash.end()来判断key值是否存在 hash.count(key) // 该函数:用以统计k原创 2022-03-13 20:50:03 · 884 阅读 · 0 评论 -
不漂亮的漂亮数组
932. 漂亮数组 对于某些固定的 N,如果数组 A 是整数 1, 2, ..., N 组成的排列,使得: 对于每个 i < j,都不存在 k 满足 i < k < j 使得 A[k] * 2 = A[i] + A[j]。 那么数组 A 是漂亮数组。 给定 N,返回任意漂亮数组 A(保证存在一个)。 示例 1: 输入:4 输出:[2,1,4,3] 示例 2: 输入:5 输出:[3,1,2,5,4] 提示: 1 <= N <= 1000 1、解题思路 .原创 2022-03-13 20:20:12 · 284 阅读 · 0 评论 -
Top K问题的类比
1、前K个最大 用小根堆,类比为一个擂台,每次挑战者都要和最菜的一个打比赛,获胜者留在擂台上,最终剩下的就是最厉害的K个人。<= 堆顶时,说明已经有K个人比挑战者更强,这个挑战者肯定是k名以外的。 2、前K个最小 用大根堆,同样是打擂台,只不过只有输的人才能留在擂台上,每次排出擂台上k个人中最强的那个比,如果输了,赢的人下场。 ...原创 2022-03-13 17:21:04 · 277 阅读 · 0 评论 -
栈上创建的对象和堆上创建的对象
1、对类的理解 1.1 类只是一个模板(Template),编译后不占用内存空间,所以在定义类时不能对成员变量进行初始化,因为没有地方存储数据。只有在创建对象以后才会给成员变量分配内存,这个时候就可以赋值了。 1.2 类可以理解为一种新的数据类型,该数据类型的名称是 Student。与 char、int、float 等基本数据类型不同的是,Student 是一种复杂数据类型,可以包含基本类型,而且还有很多基本类型中没有的特性。 2、栈上创建对象 如果创建的对象在栈上分配内存,需要使用&获取它的原创 2022-03-13 13:58:27 · 1148 阅读 · 0 评论 -
priority_queue实现最大堆和最小堆
1、头文件 #include<queue> 2、模板 STL源码中,包含三个模板参数:类型、容器适配器、比较规则。 template <class T, class Container = vector<T>, class Compare = less<typename Container::value_type> > class priority_queue; 3、常见类型 class T为常见类型:数字、字符串(string)原创 2022-03-12 16:03:19 · 522 阅读 · 0 评论