![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法笔记
文章平均质量分 81
记录自己算法积累
矩阵科学
计算机视觉图像分类在读研究生,研究方向:知识迁移、持续学习、知识蒸馏、域外数据检测。
梦想:苦练内功,成为架构师!
展开
-
二叉树算法—Java版
中序遍历-左中右-入栈顺序: 左右,较为复杂建议写递归!将每一层依次入队,每一个节点出队都要让它的所有子节点入队。后序遍历-左右中-入栈顺序:中左右,再反转。深度优先遍历(一般采用递归或栈实现)前序遍历-中左右-入栈顺序:中右左。广度优先遍历(一般采用队列实现)总结:中在哪里,取值就在哪里!迭代使用栈,注意入栈顺序;广度优先遍历(层次遍历)LeetCode练习题。后序遍历:左右中;原创 2023-03-15 22:39:28 · 358 阅读 · 0 评论 -
算法单调栈—Java版
单调栈, Java总结!原创 2023-02-24 19:44:00 · 874 阅读 · 0 评论 -
算法前缀和—Java版
前缀和,灵魂总结,速看!原创 2023-02-22 22:27:24 · 466 阅读 · 0 评论 -
算法队列与栈—Java版
Java栈、队列,优先队列,双向队列,速看!!!原创 2023-02-19 13:54:09 · 509 阅读 · 0 评论 -
DFS深度优先搜索—Java版
精讲深度优先搜索,模板即是思想,用模板无难题!原创 2023-02-18 17:45:09 · 2089 阅读 · 0 评论 -
算法二分查找—Java版
宝藏级干货二分法,一个模板适用大多数二分题,认真学,保你会!原创 2023-02-14 10:18:35 · 306 阅读 · 0 评论 -
一文讲清楚二分查找细节
一文讲清楚二分查找的各种细节,判断条件,结束条件。原创 2022-02-26 21:14:03 · 497 阅读 · 0 评论 -
重温C++算法设计基本操作
马上就要复试了,复试有上机测试,写下这篇博客重温大二的时光。本次复习主要针对考研复试,我参加过省级ICPC比赛获得过铜奖,但是不能说明什么。复试题型应该略简单相对于ICPC,主要由模拟题,数据结构题为主,基本不会有几何、图论这种题型,有的话也只是一个作为压轴题。因为本次复试机试是为了筛选掉极少数人,复试是1:1.3的比例。题型太难没有区分度,所以都是常规题。我预测题型由以下内容组成:模拟题(练习PTA乙组)、字符串基本操作(重点)、基础算法思想(贪心法、分治法、减治法)、动态规划(难点且大部分人做不出)、数原创 2021-03-10 17:30:44 · 268 阅读 · 0 评论 -
STL和基本数据结构
一、容器1、顺序式容器动态数组:vector,能够从末尾快速删除与插入,直接访问任何元素。双链表:list,能够从任何地方快速插入与删除。双向队列:deque,从前面或者后面快速插入与删除,直接访问任何元素。队列:queue,先进先出优先队列:priority_queue,最高优先级元素总是第一个出列。栈:stack,先进后出。2、关联式容器集合:set,快速查找,不允许重复值。快速查找:multiset:允许重复元素。字典:map,一对多映射,基于关键字快速查找原创 2021-02-09 18:48:57 · 339 阅读 · 0 评论 -
BKDRHash入门
DKDRHash函数介绍DKBRHash函数非常简单,我们只需要清楚基本原理就可以解决很多问题,当然不能避免所有的冲突,下图有大佬做的性能测试可知BKDDRHash函数的性能可见一斑。下面通过最简单的例子说明问题。举例介绍假设有如下字符串“abcd”,我们所做的就是寻找一个整数 i ,通过i可以直接访问到字符串,就好比数组一样,但是要保证这个 i 尽可能没有冲突,就是其他的字...原创 2019-12-12 19:15:11 · 1511 阅读 · 0 评论 -
哈希排序
哈希排序应该要和希尔排序区分开来,哈希排序的思想很简单的,典型的以空间换取时间的排序算法,其时间复杂度可以做到O(n)。简单来说就是打表,用数组下标来对应数值,用值来记录个数。具体实现看下面例子:#include<bits/stdc++.h>using namespace std;int main(){ int a[]={3,8,67,45,11,0,34,67,23,8...原创 2019-09-01 13:01:24 · 9297 阅读 · 3 评论 -
ACM常用的一些技巧
趁今天有点时间,整理下oj题型C/C++的一些标准库函数的使用!1、快排#include<iostream>#include<algorithm>using namespace std;int main(){ int a[]={2,3,6,9,10,2,0}; int i; int len=sizeof(a)/sizeof(int); s...原创 2019-04-20 16:42:40 · 2155 阅读 · 0 评论 -
C++STL——队列
其成员函数有“判空(empty)” 、“尺寸(Size)” 、“首元(front)” 、“尾元(backt)” 、“加入队列(push)” 、“弹出队列(pop)”等操作。back()返回最后一个元素empty()如果队列空则返回真front()返回第一个元素pop()删除第一个元素push()在末尾加入一个元素size()返回队列中元素的个数#include<io...原创 2019-06-13 21:17:49 · 2381 阅读 · 0 评论 -
全排列问题(不删除重复组合)
不删除重复的组合的全排列,且保持字典顺序从小到大排列。思路原理:将大问题分解成小问题。例如:1 2 3 4 分解成 1 【2 3 4】、2 【 1 3 4】、3【 1 2 4】、4 【1 2 3】四个小问题,然后用同样的方法进行将【】里面的3个数排列,然后全部打印出来就是 所有答案。但是问题来了,如何去切割成子问题?这就是本题的精华。1 2 3 4 ——> 旋转1位,变成1...原创 2019-05-01 20:21:35 · 725 阅读 · 0 评论 -
1384 全排列问题(去除重复项)
全排列问题的复杂度只能是O(n!) , 在算法理论中,对于必须要输出的元素进行计数的叫做“平凡下界”,这是程序运行所需要的最少花费。看这篇blog之前先传送到我的上一篇blog——不去重全排列:https://blog.csdn.net/cj151525/article/details/89740042看完之后,在这里先引进一个题目 传送门:http://www.51nod.com/Ch...原创 2019-05-01 21:00:32 · 1916 阅读 · 2 评论 -
C++ STL 全排列函数详解
其实全排列在c++中有标准库,直接调用就行,简直不能太爽!头文件:#include <algorithm>函数模板:next_permutation(arr, arr+size);函数模板:prev_permutation(arr, arr+size);解释:arr为数组,size为数组长度。next_permutation(arr, arr+size);当有下一个较大...原创 2019-05-01 21:29:28 · 3347 阅读 · 0 评论 -
1265 四点共面(几何问题)
1265 四点共面题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1265给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面)。如果共面,输出"Yes",否则输出"No"。收起输入第1行:一个数T,表示输入的测试数量(1 <= T <= 100...原创 2019-05-02 14:24:27 · 1866 阅读 · 0 评论 -
矩阵快速幂
先贴一个博主写的,偷个懒先:快速幂的思路就是:设A为矩阵,求A的N次方,N很大,1000000左右吧。。。先看小一点的,A的9次方A^9= A*A*A*A*A*A*A*A*A 【一个一个乘,要乘9次】= A*(A*A)*(A*A)*(A*A)*(A*A) 【保持格式的上下统一,所以加上这句】= A*(A^2)^4 【A平方后,再四次方,还要乘上剩下的一个A,要乘6...原创 2019-05-02 22:17:16 · 655 阅读 · 0 评论 -
约瑟夫环
1073 约瑟夫环http://www.51nod.com/Challenge/Problem.html#!#problemId=1073N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。例如:N = 3,K = 2。2号先出列,然后是1号,最后剩下的是3号。收起输入2个数N和K,表示N个人,数到...原创 2019-05-08 16:31:10 · 225 阅读 · 0 评论 -
RMQ 算法
看了一些别人的blog,但是我这次不想做大自然的搬运工——农夫山泉。我想写的接地气一点,别人一眼能看懂。 先引入话题吧!给你一个数组 ,其中有N个数字,现在给你一次询问,给你区间[l ,r],问你在这个区间内的最大值或最小值为多少? 我们就解决这么一个问题,这就是RMQ的精髓。RMQ算法的作用就是快速求一个区间中的最大值或者最小值。非常适合区间求最值。OJ题目...原创 2019-05-06 15:07:00 · 338 阅读 · 0 评论 -
斯特林公式求解n!位数
OJ题目:http://www.51nod.com/Challenge/Problem.html#!#problemId=1130斯特林公式n!=sqrt(2*PI*n)*(n/e)^n#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#inc...原创 2019-05-06 16:06:36 · 648 阅读 · 0 评论 -
组合排列问题(A(n,m))
组合排列问题:复杂度为O(m*n)实现原理:递归,这种做法有点类似于遍历,就是k不断从1增长到m,每一个p(k)又从a[1]到a[n]中去遍历。其实在复杂度上面递归并没有提升效率,和双重循环递推一样的。但是更易于理解,可读性强,代码少。看下一张图可能能加深理解(红色的m改成n,写错了)。/* 全排列问题 从n中选m个数按照字典排序 */#include<iostre...原创 2019-05-01 13:13:22 · 2107 阅读 · 0 评论 -
分治法求最大最小值
#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdio>#include<vector>using namespace std;int max(int a,int b){return a>b?...转载 2019-05-12 09:00:44 · 1411 阅读 · 0 评论 -
深度优先搜索(DFS)
深度优先搜索大概的框架如下:int dfs(int x,int y,int step){ if(达到目标状态) { //进行对应操作: return 0; } //遍历所有情况 for(int i=0;i<n;i++) { if(vist[i]==0) //如果没有被访问或者没有越界非法 { 对x,y进行更新: ...原创 2019-05-12 15:31:13 · 607 阅读 · 0 评论 -
P3817 小A的糖果(贪心算法)
题目描述小A有N个糖果盒,第i个盒中有a[i]颗糖果。小A每次可以从其中一盒糖果中吃掉一颗,他想知道,要让任意两个相邻的盒子中加起来都只有x颗或以下的糖果,至少得吃掉几颗糖。输入输出格式输入格式:第一行输入N和x。第二行N个整数,为a[i]。输出格式:至少要吃掉的糖果数量。输入输出样例输入样例#1:复制3 32 2 2输...原创 2019-05-16 20:09:14 · 4412 阅读 · 0 评论 -
1995 三子棋
题目:小的时候大家一定玩过“井”字棋吧。也就是在九宫格中,只要任意行、列,或者任意连续对角线上面出现三个相同的,就能获胜。现在小明和小花也在玩三子棋,但是他们不是在九宫格里,而是在3×4的格子里面。现在小明先下,但是他知道小花这个人很聪明,他想知道第一步下在哪一个地方最合适,你能帮帮他吗?输入第一行输入一个整数T,表示数据组数(1<T<10000); 第二行...原创 2019-04-25 22:41:24 · 415 阅读 · 0 评论