算法
文章平均质量分 71
新城里的旧少年^_^
这个作者很懒,什么都没留下…
展开
-
算法导论复习
例题1:因为: T1 = 30logn. T3 = 10log3n则 10log3n >= C * 30logn例题2:两个算法的时间复杂度是,T1(n) = 10n^2则 T1(n) = O(T2(n))原创 2023-12-21 15:42:51 · 417 阅读 · 0 评论 -
Leetcode刷题记录
【代码】Leetcode刷题记录。原创 2023-03-10 17:38:57 · 106 阅读 · 1 评论 -
Leetcode dfs bfs相关题目(二)
二叉树的直径仅仅看叶子节点到另一个叶子节点的最长的那条路径。原创 2023-03-04 18:35:51 · 75 阅读 · 0 评论 -
Leetcode dfs bfs 递归回溯题目
算法原创 2023-02-11 21:53:24 · 370 阅读 · 0 评论 -
Leetocde动态规划题目总结(二)
【代码】Leetocde动态规划题目总结(二)原创 2023-02-23 16:52:12 · 122 阅读 · 0 评论 -
408知识复试前摘要复习
SPFA算法原创 2022-03-26 13:08:51 · 1058 阅读 · 0 评论 -
排序算法分析
插入排序就是相当于打扑克,不断把一个数插入到之前已经已经有序的序列中去#include <iostream>#include <algorithm>using namespace std;const int N = 100010;int n;int a[N];void insert_sort(){ for(int i=1;i<n;i++){ int t = a[i]; int j = i; while(j原创 2022-03-03 16:35:05 · 608 阅读 · 0 评论 -
图论相关题目
PAT1003紧急情况#include <algorithm>#include <iostream>#include <cstring>using namespace std;const int N = 510;int n,m,s,t;//节点数目,边数目,起始点,终止点int g[N][N];//记录边权值bool visit[N];int w[N]; //每个节点救援队的数量int dis[N],route_sum[N],weight_sum[原创 2022-02-19 17:40:38 · 209 阅读 · 0 评论 -
Leetcode错题记录
15三数之和class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { sort(nums.begin(),nums.end()); vector<vector<int>> res; for(int i=0;i<nums.size();i++){ if(i>原创 2022-02-10 15:39:19 · 6983 阅读 · 0 评论 -
Leetcode动态规划题目
Leetcode10 正则表达式匹配class Solution {public: bool isMatch(string s, string p) { int n = s.size(), m = p.size(); s = ' ' + s, p = ' ' + p; vector<vector<bool>> f(n+1,vector<bool>(m+1));//vector<int> vec(原创 2022-02-10 11:34:47 · 598 阅读 · 0 评论 -
动态规划提高
数字三角模型摘花生#include <iostream>#include <algorithm>using namespace std;const int N = 1010;int f[N][N];int a[N][N];int main(){ int k; cin >> k; while(k--){ int n,m; cin >> n >> m; fo原创 2022-02-04 21:14:51 · 473 阅读 · 0 评论 -
树相关题目
树叶子节点#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N = 110;int head[N],e[N],ne[N],idx;int n,m;void add(int a,int b){ e[idx] = b; ne[idx] = head[a]; head[a] = idx; idx++;原创 2022-02-04 20:00:20 · 538 阅读 · 0 评论 -
数学知识相关题目
质数质数的定义:在大于1的整数中,如果只包含1和本身这两个约数就被成为质数或者叫做素数试除法判定质数#include <iostream>#include <algorithm>using namespace std;//如果i能被n整除,那么d/i也一定可以被n整除bool is_prime(int x){ if (x < 2) return false; for (int i = 2; i <= x / i; i ++ )//所以这原创 2022-02-04 16:50:00 · 480 阅读 · 0 评论 -
Trie树
Trie树,用来快速存储和查找字符串集合的一个数据结构#include<iostream>using namespace std;const int N = 20010;int son[N][26]; //记录i号节点的儿子,因为这个题输入都是小写字符串,所以最多有26个儿子 //比如让字符 b - 'a'就映射到了0-25的整数范围之内了int cnt[N]; //表示以N号节点结尾的单词被插入了多少次int idx = 1;原创 2021-02-16 19:37:24 · 68 阅读 · 0 评论 -
数据结构——栈和队列
栈模拟一个栈(使用数组模拟)#include<iostream>using namespace std;const int N = 100010;int stack[N];int top;void push(int x){ stack[++top] = x;}void pop(){ top--;}bool if_empty(){ if(top>0) return false; else return true;}int原创 2021-02-15 18:54:56 · 73 阅读 · 0 评论 -
KMP算法
详细参考这个是用来加快cin和cout的实例给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模板串P在模式串S中多次作为子串出现。求出模板串P在模式串S中所有出现的位置的起始下标。输入格式第一行输入整数N,表示字符串P的长度。第二行输入字符串P。第三行输入整数M,表示字符串S的长度。第四行输入字符串S。输出格式共一行,输出所有出现位置的起始下标(下标从0开始计数),整数之间用空格隔开。数据范围1≤N≤1051≤M≤106输入样例:3ab原创 2021-02-15 21:16:53 · 113 阅读 · 0 评论 -
搜索与图论
DFS千万注意DFS递归调用时要恢复现场!!!!!例题#include<iostream>using namespace std;const int N = 10;int n;int path[N];bool ifvisit[N];void DFS(int a) //a代表现在填完第几个数字了{ if(a==n) { for(int i=1;i<=n;i++) printf("%d ",path[i]); pu原创 2021-02-13 21:04:45 · 133 阅读 · 0 评论 -
基础算法笔记
前缀和一维前缀和#include <iostream>using namespace std;const int N = 1e6;int n,m;int a[N],s[N];int main(){ cin >> n >> m; for(int i=1;i<=n;i++){ cin >> a[i]; s[i] = s[i-1]+a[i]; } while(m--){原创 2022-02-04 15:49:15 · 485 阅读 · 0 评论 -
二分法学习
整数二分二分法多用于寻找某个数在一个数组中的位置,有两种不同的写法分别找到一个数的起始位置和结束位置不同的写法寻找到一个数开始或者结束的位置//区间[l,r]被划分成[l,mid]和[mid+1,r]时使用int bsearch_1(int l,int r){ while(l<r) { int mid = (l+r)>>1; if(check(mid)) r = mid; //check()函数是根据题目自己写的在左半边满足条件,右半边不满足条件 else l原创 2021-02-07 21:08:54 · 145 阅读 · 0 评论 -
贪心法学习笔记
区间选点意思就是从比如上图这是有四个区间,这些区间可能有重合的部分,从这些区间中选出最少数目的点,存在于所有区间之中原创 2021-12-27 12:31:16 · 644 阅读 · 0 评论 -
树
树的遍历PAT1020#include<iostream>#include<algorithm>#include<cstring>#include<queue>#include<unordered_map>using namespace std;const int N = 40;int n;int inorder[N],postorder[N]; //记录中序和后续的顺序unordered_map<int,int&原创 2021-03-05 21:59:48 · 107 阅读 · 0 评论 -
动态规划基础知识
动态规划问题学习笔记,我觉得应付大部分研究生复试应该绰绰有余原创 2021-03-04 17:06:08 · 164 阅读 · 1 评论 -
排序算法总结(二)------堆排序
堆排序原创 2020-08-17 10:21:19 · 651 阅读 · 0 评论 -
排序算法总结(一)
八大排序算法总结(一)归并排序归并算法采用分治策略1、归并排序的基本思想将待排序序列R[0…n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个长度为4的有序序列;如此反复进行下去,最后得到一个长度为n的有序序列2、归并排序的算法描述第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置第三步:比较两个指针所指向的元素,选择相原创 2020-08-12 16:11:28 · 153 阅读 · 0 评论 -
算法复杂度总结
<<算法导论>>学习笔记(一)算法复杂度(Algorithmic Complexity)同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑时间复杂度一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语原创 2020-08-07 15:24:48 · 588 阅读 · 0 评论