![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
请叫我迷妹
这个作者很懒,什么都没留下…
展开
-
牛客面试必考算法题刷题
文章目录设计LRU缓存结构判断链表中是否有环二分查找实现二叉树先序、中序、后序遍历寻找第K大合并有序链表设计LRU缓存结构设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1)某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。当缓存的大小超过K时,移除最不经常使用的记录,即set或g原创 2020-12-21 19:27:12 · 1387 阅读 · 0 评论 -
剑指offer刷题
二维数组的查找(牛客网JZ1)在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。如果是一维有序数组的查找,那么用的就是二分法,对于二维数组,首先想到的是选取矩阵中间的一个数字,但是如果比查找数大,可能出现在该数字的下方或者右方,因此这里选取的是右上角的数字,如果比查找数大的话,那么就固定在该数字的左方,如果比查找数小,就固定在查找数的下方class Solu原创 2020-11-25 19:55:03 · 247 阅读 · 0 评论 -
Percolation
算法设计与分析 模拟考 Percolation 原创 ...转载 2020-01-07 14:39:56 · 148 阅读 · 0 评论 -
算法设计课程复习(9)-递归
递归#include <iostream>#include <cstdio>#include <vector>#define Max 100using namespace std;void pre(vector<int> inorder, vector<int> post, vector<int> &re...原创 2020-01-05 23:19:36 · 294 阅读 · 0 评论 -
算法设计课程复习(10)-拓扑排序
拓扑排序sort it all outsorting it all out#include <iostream>#include <cstdio>#include <queue>#include <vector>#include <cstring>#define Max 50#define Maxm 1000using...原创 2020-01-05 11:10:48 · 173 阅读 · 0 评论 -
算法设计课程复习(8)-最短路径
最短路径这里的最短路径算法是bellman算法,同时可以判断该图有没有正权回路或者父权回路Currency ExchangeAC代码#include <iostream>#include <cstdio>#include <cstring>#define Max 1000using namespace std;struct edge { ...原创 2020-01-04 21:03:54 · 146 阅读 · 0 评论 -
算法设计课程复习(7)-BFS & DFS
DFS棋盘问题#include <iostream>#include <cstdio>#include <cstring>#define Max 10using namespace std;int n, k, cnt, way; // cnt表示方案数,way表示这一个方案p放了多少颗棋子char maze[Max][Max];int vis...原创 2020-01-04 20:03:59 · 196 阅读 · 0 评论 -
算法设计课程复习(6)-网络流
网络流dinic算法dining模型详见diningAC代码:#include <limits.h> //INT_MAX的头文件#include <iostream>#include <stdlib.h>#include <assert.h>#include <cstdio>#include <queue>...原创 2020-01-02 14:54:45 · 205 阅读 · 0 评论 -
算法设计课程复习(5)-动态规划
动态规划合并石子这道题中如果只有两堆石子,也可以合并,和那道multiplication puzzle的题不一样,那道题是必须要三堆AC代码#include <iostream>#include <cstdio>#define Max 100#define INF 0x3f3f3f3fusing namespace std;int dp[Max][Max]...原创 2019-12-30 17:28:51 · 214 阅读 · 0 评论 -
算法设计课程复习(4)-分治算法
分治算法求逆序对数ultra-quicksortAC代码://用int会出错,改成用long long#include <iostream>#include <cstdio>#include <vector>#define Max 500005using namespace std;long long merge(int input[], ...原创 2019-12-30 16:24:30 · 195 阅读 · 1 评论 -
算法设计课程复习(3)-MST
MST求解用Krystal算法题目详见Agri-NetAC代码:#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#define Maxn 105#define Maxm 10000using namespace std;struc...原创 2019-12-20 19:57:46 · 163 阅读 · 0 评论 -
算法设计课程复习(2)-优先队列
优先队列优先队列的出队顺序是按照优先级来的,可以找到最小或者最大元素,同时支持插入或者删除最小最大元素。优先队列的格式:priority_queue<T, Container, Compare>T:队列中元素的数据类型Container: 用于储存和访问队列元素的底层容器的类型。Compare: 比较关系,默认是数值上的小于关系(return a<b),比如1<...原创 2019-12-20 19:11:18 · 312 阅读 · 0 评论 -
算法设计课程复习(1)-并查集
并查集并查集基本代码如下//定义元素的父母结点int p[Max];//初始化void init(int n) { memset(p, -1, sizeof(p)); //或者这样 for(int i=0; i<n; i++) { p[i] = i; }}//查找祖先int findroot(int a) { if(p[i] != a) { p[a] = ...原创 2019-12-19 20:59:47 · 130 阅读 · 0 评论 -
算法设计-bfs
在写bfs算法的时候一定要注意退出结束条件,如果是固定某个点到另一个点使用bfs,那么退出条件就是判断现在访问到的点是终点。否则就是遍历所有点,那么这样就不需要退出条件。还有一个问题就是可能原始的图并不是连通图,那么就需要在队列循环的外层再加一层循环,用来遍历所有点选取一个初始节点,详情见butterfly...原创 2019-12-02 10:22:58 · 130 阅读 · 0 评论 -
算法设计-动态规划(2)-背包问题
动态规划背包问题0-1背包问题有一个容量为V的背包,有n种物品,每种物品都有自己的重量w和价值v,每种物品都只有一个,现给出让该背包装最大价值的物品的方案。子问题是,对于每个物品,装下或者装不下。如果装不下,那么和前i-1个物品的最大价值是一样的。如果能够装下,但是装了之后不一定会大于当前相同体积的最优价值。状态是d[i][j],表示的是当背包容量为j时,前i个物品所能达到的最大价值。...原创 2019-11-20 17:03:48 · 577 阅读 · 0 评论 -
算法设计-动态规划(1)-子序列和最大问题
算法设计-动态规划子序列和最大问题子序列和最大递推方程:d[i] = max{a[i], d[i-1]+a[i]},d[i]表示的是子序列一定会包含第i个元素的最大和,要么是从a[i]开始,要么是在原来的最大序列上再添一个a[i]。最终得到的最大子序列和是max{d[i]}(0<=i<=n)代码如下://b[i]的状态转移方程:b[i]=max{b[i-1]+a[i],a...原创 2019-11-18 23:17:06 · 503 阅读 · 0 评论 -
匈牙利算法求二分图的最大匹配
最大流算法的核心问题就是寻找增广路径,匈牙利算法也是,它的基本模式为:初始时最大匹配为空while 找得到增广路径do把增广路径加入到最大匹配中去(注:匈牙利算法虽然根本上是最大流算法,但是它不需要建网络模型,所以图中不再需要源点和汇点,仅仅是一个二分图。)对于增广路径可以用一个递归的方法来描述,“从点A出发的增广路径”一定首先连向一个在原匹配(就是我们要找的最大匹配)中没有与A配对的点...原创 2019-11-20 09:52:37 · 129 阅读 · 0 评论