随笔分类 -  基础算法

摘要:离散化 什么是离散化? 一些数据范围比较大,但是数据的个数不多,将其数字映射成较小的下标 从本质上来看离散化可以看成哈希,是一种特殊的哈希,其保证数据在哈希以后仍然保持原来的顺序 离散化的步骤 排序 去重(排序好了才能去重,可以用stl中的unique去重然后用erase去除) 访问的时候可以通过二 阅读全文
posted @ 2022-07-28 12:22 SL霸霸 阅读(100) 评论(0) 推荐(0) 编辑
摘要:双指针去重法 思路 代码板子 //返回一个无重序列的后一位的迭代器(便于删除,仅保留无重复序列) vector<int>::iterator unique(vector<int>& t) { int j = 0; for (int i = 0; i < t.size(); ++i) { if (!i 阅读全文
posted @ 2022-07-27 20:15 SL霸霸 阅读(59) 评论(0) 推荐(0) 编辑
摘要:区间合并的朴素做法 时间复杂度O(n2) 第一层循环遍历遍历区间,然后第二层循环去查找区间看能否合并然后更新,时间复杂度太高了 区间合并的贪心做法 时间复杂度O(nlogn) 步骤: 左端点为关键字然后从小到大排序 当前区间和下一个区间的关系有三种: 核心板子代码 // 将所有存在交集的区间合并 i 阅读全文
posted @ 2022-07-27 20:08 SL霸霸 阅读(26) 评论(0) 推荐(0) 编辑
摘要:位运算常见的两种操作 1. 求x的二进制表示中第k位是几x >> k & 1(从第0位开始,比如1100第0位是0,第一位是0,第二位是1,第三位是1) #####算法的时间复杂度:O(logn) #####算法详解: 1.先把第k位移到最后一位x >> k 2.再看个位是几(通过&1来判断) x 阅读全文
posted @ 2022-07-25 00:47 SL霸霸 阅读(39) 评论(0) 推荐(0) 编辑