摘要: 经典排序算法 选择排序 算法思想: A.在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 B.从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾 C.以此类推,直到所有元素均排序完毕 【参考代码】 #include<iostream> #include<algorithm> 阅读全文
posted @ 2021-11-04 21:21 时间最考验人 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 双指针算法 什么是双指针 严格的来说,双指针只能说是是算法中的一种技巧。 双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。最常见的双指针算法有两种:一种是,在一个序列里边,用两个指针维护一段区 阅读全文
posted @ 2021-11-04 21:16 时间最考验人 阅读(1337) 评论(3) 推荐(1) 编辑
摘要: 区间合并 给定 n 个区间 [li,ri],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:[1,3] 和 [2,6] 可以合并为一个区间 [1,6] 。 输入格式 第一行包含整数n。 接下来n行,每行包含两个整数l和r。 输出格式 共一行,包含一个 阅读全文
posted @ 2021-11-04 21:13 时间最考验人 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 二分法 如果序列是有序的,就可以通过二分查找快速定位所需要的数据。除此之外,二分思想还能求出可行解的最值问题,比如想知道某款手机最高能多少楼高度摔下来而不会摔坏,使用二分的方式可以用最小实验次数就能得到结果(当然你需要准备好几个样品)。 整数二分 单调性与二分的关系:有单调性一定可以二分,用二分不一 阅读全文
posted @ 2021-11-04 21:10 时间最考验人 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 数组模拟栈与队列 数组模拟栈 栈特点:后进先出 模板 // tt表示栈顶 int stk[N], tt = 0; // 向栈顶插入一个数 stk[ ++ tt] = x; // 从栈顶弹出一个数 tt -- ; // 栈顶的值 stk[tt]; // 判断栈是否为空 if (tt > 0) { } 阅读全文
posted @ 2021-11-04 20:20 时间最考验人 阅读(49) 评论(0) 推荐(0) 编辑