随笔分类 - 数据结构与算法
摘要:预备知识: 完全二叉树可以用数组表示: 从下标0开始存储数据:左子节点 = 2 * 父节点 + 1,右子节点 = 2 * 父节点 + 2; 从下标1开始存储数据:左子结点 = 2 * 父节点,右子节点= 2 * 父节点 + 1; 堆: 大根堆:父节点的值大于等于左右子节点的值; 小根堆:父节点的值小
阅读全文
摘要:我搞了一个下午和一个晚上,网上的博客、视频讲得不清不楚,只会讲模拟却讲不出所以然,感觉真的很难!!!下面是自己的理解,不保证没问题! 以下代码按照该题来写:模板题:204. 计数质数。 简述:埃氏筛算法中,同一个合数会被多个质数标记(例如 45 这个数,它会同时被 3,5 两个数标记为合数),线性筛
阅读全文
摘要:链接:树状数组_哔哩哔哩 (只有五分钟,多看几遍,就会了) 模板题:P3374 【模板】树状数组 1 - 洛谷 树结构:(上图是完整树结构,下图是树状数组树结构),代码对这写容易理解。 14.1 作用 求前缀和、区间和(跟前缀和的作用一样); 元素修改之后能高效更新:(时间复杂度) 前缀和:$O(l
阅读全文
摘要:下面的代码均为 C++ 代码! 1. 普通快速幂 例题:50. Pow(x, n) 解法:递归或者迭代(时间复杂度均为,递归空间复杂度为 ,迭代空间复杂度为 ); 迭代算法详解:(参考了官方题解:Pow(x, n) - 方
阅读全文
摘要:不想废话了! 条件:升序数组; 结果:找得到的话返回 数组下标,找不到则返回 -1 ; 循环 //二分查找-循环(升序数组) int binarySearch(vector<int>& nums, int target) { int start = 0, end = nums.size() - 1,
阅读全文
摘要:一.摘要 做题已经遇到很多矩阵旋转的题了,如果一个一个看还是不知道该怎么找规律,这里介绍一种个人觉得比较简便的方法。 二.步骤 原矩阵和顺时针旋转90°、180°和270°(逆时针90°)如下: 1.如果你一个一个去分析,列出它们元素的坐标,还是比较难找到规律的,而且还非常麻烦。首先,矩阵旋转,我们
阅读全文
摘要:一.摘要 list容器封装了一个 sort() 函数对链表进行排序,以前没动手写过链表的排序,当初以为觉得这不是轻而易举吗?今天的 linux c编程实验 要用到链表,真的是我想当然了,花费了一下午和一晚上的时间。真的有点不可思议。总的来说,说起来容易也不容易,难也不难,只要你思路清晰,感觉还是很容
阅读全文
摘要:一.更相减损法 代码(C++描述): (局限性:x,y都为正数时才可用) 1 /**更相减损法求最大公因数和最小公倍数*/ 2 #include<iostream> 3 using namespace std; 4 int main(){ 5 int x,y,n,m; 6 cin>>x>>y; 7
阅读全文
摘要:一.简介 快速幂的效率和普通乘法不会快太多,因为 “n=n*n”这个操作使得底的位数指数级增长,例如刚开始输入的底n为100,n=n*n执行了两次之后,n=10000,再执行一次之后n=100000000,n越大,n=n*n 消耗的时间越大。据我来看,快速幂的主要不是用于求精确数,主要计算结果对k取
阅读全文
摘要:(基本上是从百度百科搬过来的,虽然本大佬是宇宙无敌牛逼,但是有错还请指出~谢谢,有空请你一起抠脚~么么哒) 求底数为a的n次幂: 一般解法都是“a*a*a……*a”,复杂度为O(n); 下面是快速幂解法: 1.把n转换为二进制,例如: 11转换为二进制1011; 2.将n得到的二进制以“数位的值*权
阅读全文
摘要:(本人知识 while(1)cout<<"非常"; 有限,如果你看到我有任何错漏或者不足,真的真的真的恳请大家指出,蟹蟹,我希望大家可以一起进步~) 一.摘要 int类型的变量只能存放-2^31~2^31-1范围的数据 long long类型的变量只能存放-2^63~2^63-1范围的数据 对于大数
阅读全文