自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 SpringBoot运行原理浅析

通过看源码简单分析springboot的运行原理

2022-08-02 19:18:53 199 1

原创 colab中安装torch0.4.1

colab中安装torch0.4.11.whl列表查看torch历史版本找到0.4.1https://download.pytorch.org/whl/torch_stable.html2.查看当前colab中python版本号!python -V3.在历史版本中找到对应python的whl文件(我的是py3.7.x版本的)- - -就是cp37-cp37m这一块对应好# 在这里用的是cu90下的.whl文件,别找错了有的是cpu下的!pip3 install http://downlo

2022-05-27 20:51:52 1201

原创 Spring知识框架

Spring知识框架Spring总体架构IOC知识体系图

2022-05-26 19:45:23 182

原创 Spring稳定版本下载

Spring 稳定版本下载首先在浏览器地址栏输入spring.io进入spring官网然后依次点击Projects --> Spring Framework (如下图)点击GitHub图标跳转下拉找到readme中的Access to Binaries ---------->>>>>> 点击下方连接下拉找到Spring Repositories后点击https://repo.spring.io跳转然后依次按照下图点击复

2022-05-22 17:59:20 534

原创 Trie树最大异或对

Trie树最大异或对Q:在给定的 N 个整数 A1,A2……AN 中选出两个进行 x or(异或)运算,得到的结果最大是多少?数据范围:1≤N≤10^5,0≤Ai<2^31思路:先暴力求解后发现第二层循环可以使用Trie树优化,将每个数的二进制形式存入Trie数中,然后从高位开始依次选取将会获得最大异或值的方向前进。例如:x当前最高位是1,这个时候就得找其他数据在最高位是0的方向才能使得最终异或出来的结果最大。#include<iostream>#include

2022-03-11 23:55:09 206

原创 Trie树字符串匹配

Trie树字符串匹配Trie树实际上是一个多叉树的结构,实用于字符串的匹配。Trie树中有个二维数组 son[N][26],表示当前结点的儿子,如果没有的话,可以等于++idx。Trie树本质上是一颗多叉树,对于字母而言最多有26个子结点。所以这个数组包含了两条信息。比如:son[1][0]=2表示1结点的一个值为a的子结点为结点2;如果son[1][0] = 0,则意味着没有值为a子结点。维护一个字符串集合,支持两种操作:#include<iostream>using na

2022-03-10 15:47:15 279

原创 单调队列 -- 滑动窗口

滑动窗口求每个滑动窗口的最小值、最大值从左到右扫描整个序列,用一个队列来维护最近 k 个元素,每k个元素就是一个窗口;暴力枚举就是每次都遍历一遍窗口中所有元素,找出最小值即可,窗口从左到右需要移动n - 1次。这样时间复杂度就变成 O(nk)了;在暴力枚举的基础上可以发现单调性求最小值最大值时间复杂度为O(n):如果队列中元素满足 a[i] >= a[i+ 1] (a[i]为队尾元素、a[i + 1]为待比较元素),那么 a[i] 就不会是最小值了,可以直接将 a[i] 删掉;此

2022-02-22 14:09:33 661

原创 单调栈的应用

单调栈的应用给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。思路:通过暴力枚举两层for循环嵌套可以求出,但通过观察这些数据有这样的一条规律。(数组中每个数与其左边的数比较并输出第一个比它小的数就可以利用单调性来解题。假设a5左边的元素风别是a1 a2 a3 a4,其中a2是a5左边第一个比它小的数;那么这时a3和a4一定都大于等于a5,那么就可以删除a3和a4并将a5放入其中。这样即使要找a6左边第一个小于本身的数,也不可能是之前的a3或者a4。因为a5更靠

2022-02-21 12:24:02 292

原创 中缀表达式计算

中缀表达式计算中缀表达式需要考虑操作符的优先级,优先级高的必须先计算,有括号就计算括号内的,因此可以使用栈来模拟中缀表达式的计算过程。具体操作需要两个栈,一个存储数字,一个存储操作符。当操作符的栈外优先级高于栈内优先级时操作符入栈,否则弹出当前栈顶元素进行操作后再比较优先级的高低,当栈外优先级高于栈内优先级时入栈。当出现 ‘ ( ’ 时直接入栈,出现 ’ ) ‘ 时依次出栈,直到栈顶元素为 ’ ( '。#include<iostream>#include<cstrin

2022-02-19 16:44:20 747

原创 用数组模拟实现栈

数组模拟栈#include<iostream>using namespace std;const int N = 1e5 + 10;//stk:模拟栈//tt:表示下标int stk[N], tt;int main(){ int m; cin >> m; while(m --) { string op; int x; cin >> op;

2022-02-19 12:59:29 469

原创 双链表数组实现

用数组实现双链表#include<iostream>using namespace std;const int N = 1e5 + 10;// idx 存储当前已经用到了哪个点int e[N], l[N], r[N], idx;//初始化,将0和1号节点设置为首尾节点void init(){ r[0] = 1; l[1] = 0; idx = 2;}//在第k号操作的节点后面插入一个节点void add(int k, int x){ e

2022-02-18 14:08:03 420

原创 使用数组创建静态单链表

单链表用数组实现一个静态单链表例题实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 k 个插入的数后面的数;在第 k 个插入的数后插入一个数。现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2 个插入的数,…第 n 个插入的数。输入格式第一行包含整数 M,表示操作次数。接下来

2022-02-15 15:05:35 408

原创 算法基础 -- 区间合并

区间合并问题:给定 n 个区间 [ l , r ],要求合并所有有交集的区间。(如果在端点处相交,也算有交集)输出合并完成后的区间个数。核心思想:首先按每个区间的左端点进行排序,然后再依次处理剩下三种可能存在交集的情况区间1的右端点在区间2左端点的左边(无交集)区间1的右端点在区间2左端点的右边 (有交集)区间1包含区间2 (有交集)注意: 代码中 -2e9 因为 int 的最小值为−2147483647 ~ 2147483647,所以取−2e9 ~ 2e9比较省事,

2022-02-12 11:43:44 620

原创 算法基础 -- 区间和

区间和假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。输入格式第一行包含两个整数 n 和 m。接下来 n 行,每行包含两个整数 x 和 c。再接下来 m 行,每行包含两个整数 l 和 r。输出格式共 m 行,每行输出一个询问中所求的区间内数字和。数据范围−10 ^9 ≤ x ≤ 10 ^9,

2022-02-11 12:05:57 813

原创 算法基础--双指针算法

最长连续不重复子序列核心思想 :遍历数组a中的每一个元素a[i],计算每一个以a[j]开始a[i]结尾的连续子序列的长度,并将长度i - j + 1 与较大的 res 比较并更新(res = max(res, i - j + 1));对于每一个i,如何确定j的位置:由于[j, i - 1]是前一步得到的最长连续不重复子序列,所以如果[j, i]中有重复元素,一定是a[i],因此右移j直到a[i]不重复为止([j, i - 1]已经是前一步的最优解,由于i 和 j 都具有单调性,j不可能左移,所以

2022-02-08 15:30:27 680

原创 算法基础 - 差分矩阵

差分矩阵差分数组可以将二维数组的核心操作由O(n*n),变为O(1) 。假设原数组 a[N][N] 是 b[N][N]数组的前缀和,那么b[ ][ ]数组为a[ ][ ]数组的差分数组。构造差分数组与一维差分类似,构造差分数组的目的是为了让原数组a中的子矩阵加上一个数c时所需要的时间复杂度从O(n * n) 优化到O(1)。由于b数组为a数组的差分数组,所以将b[ i ][ j ] 加上一个数c,则原数组a[ i ][ j ]以及之后的数也都会同时加上c。假定差分数组已被构建成功,为了使被

2022-02-04 11:41:36 1644

原创 算法基础---差分应用

差分定义 : 给定 a[1], a[2], a[3], …, a[n] 构造差分数组 b[N],使得 a[i] = b[1] + b[2] + … + b[i]核心操作 :将a[L ~ R] 全部加上C , 等价于: b[L] += C , b[R + 1] -= C 时间复杂度是O(1)其中: a[1 ~ L-1] 无影响 、a[L ~ R]加上了C 、a[R+1 , N]无影响#include<iostream>using namespace std;const i

2022-02-03 12:13:40 954

原创 算法基础---子矩阵的和(二维前缀和)

子矩阵的和思想(1) S[i, j] 怎么求?公式 : S[i, j] = S[i - 1, j] + S[i, j - 1] - S[i - 1, j - 1] + a[i, j](2) (x1, y1) 和 (x2, y2) 这一子矩阵中所有数的和怎么求?S[x2, y2] - S[x1 - 1, y2] - S[x2, y1 - 1] + S[x1 - 1, y1 - 1]例题:输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y

2022-01-28 11:39:01 797

原创 算法基础---高精度除法

高精度除法例题:给定两个非负整数(不含前导 0) A,B,请你计算 A/B 的商和余数。数据范围 :1≤A的长度≤100000 , 1≤B≤10000 , B 一定不为 0输出: 共两行,第一行输出所求的商,第二行输出所求余数。#include<iostream>#include<vector>#include<algorithm>using namespace std;//A除b r为余数 vector<int> div(vect

2022-01-27 11:10:33 584

原创 算法基础 --- 高精度乘法

高精度乘法练习题给定两个非负整数(不含前导 0) A 和 B,请你计算 A×B 的值。数据范围: 1≤A的长度≤100000 , 0≤B≤10000模拟:A = 123 , B = 4 , A * B = C , C = 492 = C2C1C0C0 = 2 , C1 = 9 , C2 = 4492 = C2 * 10^2 + C1 * 10 + C0进位数 t 为: t /= 10;#include<iostream>#include<vector>

2022-01-27 10:21:37 448

原创 算法基础 --- 高精度减法

高精度减法给定两个正整数(不含前导 0),计算它们的差,计算结果可能为负数。输入格式 : 共两行,每行包括一个正整数。输出格式 : 输出一行,可能结果为负数。思想输入两个字符串,并将两个字符串每一个都减去’0’转换为一个一个的整数,最后存入vector中判断两个数组的大小,保证每次都是较大的数减去较小的数,最后结果为负数则输出时添加“-”进行减法操作:(1)设置一个进位数 t 用来表示是否向前进位,初始值为0;vector A, B,C;(2)从个位数开始计算每次计算结果临时保存到 t

2022-01-25 11:53:26 358

原创 算法基础---高精度加法

高精度加法描述给定两个正数计算他们的和1 <= 整数长度 <= 100000思路使用vector存数数据,可以调用size()方法直接获取数字长度将数字一个一个拆分开来并逆序放入vector中例如:1234567放入vector:[7,6,5,4,3,2,1]#include<iostream>#include<vector>using namespace std;vector<int> add(vector<int&

2022-01-20 13:57:03 465

原创 算法基础---逆序对数问题

求逆序对数问题问题描述对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对。问题分析可以采用分治法中归并排序的思想来解决问题O(nlogn)将序列从中间分开可以将逆序对分成三种情况:组成逆序对的两个元素都在左边left组成逆序对的两个元素都在右边right组成逆序对的两个元素跨左右两个区间left和right各一个于是就有递归计算左边的逆序数递归计算右边的逆序数递归计算左右跨左右两边的逆序数再把他们累加

2022-01-19 14:17:51 919

原创 算法基础---归并排序

归并排序归并排序使用的是分治法的思想,主要有三个步骤:第一步:分解成子问题,确定分界点:mid = (l + r) / 2第二步: 递归处理子问题,递归排序left和right两个区间第三步: 合并子问题,归并两两合二为一输入n个元素的数列进行排序输入样例55 3 4 2 1输出样例1 2 3 4 5#include<iostream>using namespace std;const int N = 1e5 + 10;int n;int q[N], tmp

2022-01-19 11:18:02 848

原创 算法基础---快速选择算法

快速选择算法问题使用快速排序算法求出数列从小到大排序后的第k个数。输入格式:第一行两个整数: n(数列中数据个数)和 k(第k个数)第二行输入数列: 包含n个整数输入样例:5 22 3 4 1 7输出样例:2解题思路找到排序算法递归出口快速排序分治思想,将区间划分。比较 k 与 区间的大小,若 k 小于等于左半区间则递归左半区间,反之则递归右半区间。#include<iostream>using namespace std;int n, k;co

2022-01-18 11:29:45 491

原创 算法基础--快速排序算法

快速排序基于分治思想求解(一)算法步骤:1.确定分界点:q[l]、q[(l+r)/2]、q[r]随机选取。2.调整区间:使得左半边所有的数小于等于X;右半边所有的数大于等于X;分界点闪上的数为X (X不一定在正中间位置,可能在很奇怪的位置)。3.递归处理左右两区间:设置头尾两个指针遍历数组。(注意结束点)模拟:[3,1,2,3,5]不稳定的算法#include <stdio.h>#include <iostream>using name

2022-01-18 10:37:04 143

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除