算法基础
文章平均质量分 74
thginWalker
先了解世界,再隐秘其中!
展开
-
leetcode基础算法刷题汇总
总结算法刷题的一些模板和刷题规律。原创 2024-07-03 14:24:34 · 163 阅读 · 1 评论 -
扫描线
扫描线原创 2022-12-09 17:42:50 · 99 阅读 · 0 评论 -
单调栈
单调栈原创 2022-10-12 23:51:00 · 63 阅读 · 0 评论 -
运用位运算的相关总结
前言在刷leetcode的时候为了提高效率,很多操作可以使用位运算来进行优化,此文用于收集并总结位运算的相关操作。位运算基础知识可见:传送门。内容位运算实现四则运算-python版这个太硬核了,看看就行,要是写代码这样那就太夸张了Fight!!(o-)~’'☆ミ☆ミ乘以2操作常规代码:b = a * 2;位运算代码:b = a << 1;乘以2并加1操作常规代码:b = a * 2 + 1;位运算代码:b = a << 1 | 1;资料位运算表原创 2020-11-06 17:31:22 · 345 阅读 · 0 评论 -
最大字段和
题目给定由n个整数(可能有负数)组成的序列a1,a2,...,an,要在这n个数中选取相邻的一段ai,ai+1,...,aj(1≤i≤j≤n),使其和最大,输出最大的和。当所有整数均为负整数时,定义最大字段和为0。a_1,a_2,...,a_n,要在这n个数中选取相邻的一段a_i,a_{i+1},...,aj(1\leq i \leq j \leq n),使其和最大,输出最大的和。当所有整数均为...转载 2019-05-06 11:35:31 · 868 阅读 · 0 评论 -
最长公共子序列
题目最长公共子序列问题是在序列X和Y的公共子序列中查找长度最长的公共子序列,而最长公共子序列往往不止一个。例如:X=(A,B,C,B,D,A,B),Y=(B,D,C,A,B,A),则Z=(B,C,B,A),Z1=(B,C,A,B),Z2=(B,D,A,B),均属于LCS(X,Y),即X,Y的最长公共子序列有3个。X= (A,B,C,B,D,A,B),Y = (B,D,C,A,B,A),则Z =...转载 2019-05-06 10:31:17 · 290 阅读 · 0 评论 -
矩阵连乘积
题目m×\times×n矩阵A与n×\times×p矩阵B相乘需消耗O(mnp)的时间。我们把mnp作为两个矩阵用来相乘所需时间的测量值。在多个矩阵连乘的情况下,不同矩阵之间的计算顺序不同结果虽然相同,但总共所需要的乘法数量不同。例子:A === (256143)\bigl(\begin{matrix} 2 & 5 & 6\\ 1 & 4...转载 2019-05-05 19:44:38 · 926 阅读 · 0 评论 -
C++ 基础知识总结
打算刷leetcode,有些放不下Python和C++这两种语言,常有些人说用Python刷算法是作弊。感觉有些道理吧,这不认真复习一下C++的基础。原创 2019-04-23 13:46:13 · 2527 阅读 · 2 评论 -
斐波那契数列
思想说起斐波那契数列,相比学过计算机和数学的都肯定了解过。之前大家一般都是用递归写,时间复杂度为O(2n)O(2^{n})O(2n),效率低下。要是用一维数组存储已经计算的则时间复杂度为O(n),空间复杂度为O(n),感觉还算不错。而迭代的写法能在此基础上将空间复杂度将至O(1)。代码#include<iostream>using namespace std;int fib...转载 2019-04-22 18:15:42 · 206 阅读 · 0 评论 -
辗转相除法(欧几里德算法)
思想这是经典的迭代算法,用于计算两个整数a,b的最大公约数。其实对于原理我个人也不太懂。原理代码#include<iostream>using namespace std;int gcd(int a,int b){ int temp; if(a < 0 || b < 0) return 0; //b总是表示较小的那个数,若不是则交换a,b的值 ...转载 2019-04-22 17:52:32 · 532 阅读 · 0 评论 -
全排序
思想整数划分,是指把一个正整数n表示成系列正整数之和:例如正整数6有如下11种不同的划分,所有p(6)=11代码#include<iostream>using namespace std;void Perm(int list[],int k,int m){ if(k == m){ for(int i = 0;i <= m;i++) printf("%d...原创 2019-04-22 14:08:40 · 592 阅读 · 0 评论 -
整数划分
思想整数划分,是指把一个正整数n表示成系列正整数之和:例如正整数6有如下11种不同的划分,所有p(6)=1165+14+2,4+1+13+3,3+2+1,3+1+1+12+2+2,2+2+1+1,2+1+1+1+11+1+1+1+1+1我们假设函数f(n,m):n为要整数划分的数,m为划分中出现的最大加数然后可以推出递归关系(反正我是推不出,只能理解了 (●—●))①f(...原创 2019-04-22 08:37:43 · 14439 阅读 · 6 评论 -
1□2□3□4□5□6□7□8□9=110
回溯法+栈运算符优先级题目代码运行总结题目1□2□3□4□5□6□7□8□9=110要求在中间的8个空中填写+,-,或不填。构成的表达式判断是不是正确,正确则输出。。。。(如果空格的中没有填写符号,则这几个数组成一个新的N位数,比如1□2,可以是1+2,也可以是12)代码#include<iostream>#include<stack> #include&l...原创 2019-03-22 14:41:50 · 2424 阅读 · 0 评论