自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 问答 (1)
  • 收藏
  • 关注

原创 开散列表(除留余数法)

开散列表

2022-10-27 08:47:58 609 1

原创 杀死进程的有效方法

Window下netstat -ano | findstr 端口号taskkill /pid PID /fLinux下netstat -tunlp|grep 端口号kill -9 PID

2022-03-13 21:38:24 278

原创 Unnecessary use of boolean literals in conditional expression解决方法

问题描述Vue中使用v-show隐藏/显示代码块,用计算属性返回true或false,返回三目运算符,出现Unnecessary use of boolean literals in conditional expressionreturn show ? true : false原因返回值是文字类型,返回的是相当于是‘true’或‘false’解决方法使用双重否定,迫使结果变成一个布尔类型return !!show...

2022-02-22 16:59:40 3339

原创 springboot集成邮箱完成注册功能

功能:发送激活链接,在邮箱中点击链接即可激活(可以在业务层结合数据库实现链接激活失效时长,本文不详述)springboot(后端)项目依赖pom.xml <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-email</artifactId> <version&

2022-02-16 14:53:13 888

原创 springboot集成JWT

项目依赖pom.xml <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.10.3</version> </dependency>拦截器拦截tokenJwtInterceptor.javapackage com.example.oj.common;

2022-02-16 14:20:34 537 1

原创 webpack打包图片多生成空白图片且图片不能正常加载

我用的是webpack的V5.66.0版本,下面是正确的配置方法//配置图片的loader { test: /\.(gif|png|jpe?g)$/, use: { loader: 'file-loader', options: { name: '[name].[ext]',

2022-01-16 20:49:54 655 1

原创 JDBC写入数据库中文乱码

JDBC中文乱码

2022-01-01 16:39:48 479

原创 图的遍历(BFS和DFS)c语言纯手写

考研ing,以防考试限制使用STL等工具,c语言纯手写图和队列/*注意:1、顶点编号与邻接点下标都是从0开始2、代码没有设置容错处理,请确保输入数据无误*/#include <stdio.h>#include<stdlib.h>typedef enum {false,true} bool;#define ERROR -1/* 最大顶点数 */#define MaxVertexNum 10/* 邻接点的定义 */typedef struct AdjVNo

2021-09-09 21:18:11 358

原创 快速安装python包

Python pip安装的原理就是从Python的官方源下载到本地安装但是使用官方源速度较慢(有时候非常慢…),经常安装超时从而导致安装失败,浪费大量的时间。现在国内也有很多xx源,从他们那里下载是非常快的,我个人推荐的是豆瓣源豆瓣源地址https://pypi.douban.com/simple/使用豆瓣源安装:pip install -i https://pypi.douban.com/simple/ pymysql # pymysql替换成你想安装的包名...

2020-09-25 19:39:35 306

原创 最容易理解的KMP算法讲解

对于字符串的匹配问题,我们最先想到的肯定是BF(Brute Force)暴力算法BF算法的思路就是:遍历模板串,判断模板串的当前字符是否与子串的第一个子串相等,如果相等的话,那么子串和模板串同时往后移动一位再次进行判断,当全部相同(子串匹配成功)或者匹配的某一个字符不相同,那么结束匹配。匹配成功或者某一个字符不相同,我们需要将子串复原,模板串后移一位,我们则判断模板串的下一个字符与子串的首字符是否相等,相等再继续往后判断,不相等则模板串往后移动一位。以落谷题目给出的样例为例:ABABABC (模板串

2020-09-20 18:52:05 198

原创 next_permutation全排列函数

首先这个函数的位于头文件< algorithm >next_permutation()是按照字典序产生排列的,并且是从数组中当前的字典序开始依次增大直至到最大字典序参考链接因此,这个函数的使用方法只适用于有序的数组力扣题目为例:第K个排序class Solution {public: string getPermutation(int n, int k) { if(!n) return ""; vector<char> ch;

2020-09-08 13:12:35 131

原创 130. 被围绕的区域

力扣2020/8/11打卡题目这个题目类似走迷宫那样,如果走不到地图边界的话,把可以走的线路都标记一下,可以走到边界的话不用处理。这很明显就是搜索了(dfs和bfs都可)O代表通路,X代表墙爆搜的话多半RE,图的大小也不知道。如果一个点一个点判断的话肯定很慢,题目说了,走到边界,这是重点,我们可以把边界作为起点,然后只需要把所有边界作为起点,将可以走到的路径都做标记即可!class Solution {public: int dx[4]={1,0,-1,0}; int dy[4]=

2020-08-11 10:43:08 151

原创 696. 计数二进制子串

这题属于一看就会,一做就废的字符串的长度是5w,因此我们需要线性或者nlogn的时间复杂度,偏偏我在最开始的时候用了n^2的方法,直接RE…正常来说肯定是把每一个点作为起点,往后查找,但是这么就RE了(V-V)这里推荐一种比较好的思路:我们可以统计出每段0(1)的长度,然后累加相邻长度最小的即可。以题目的示例1为例得到每段的长度序列:[2,2,2,2]那么,结果就是2+2+2=6再看一组数据"00100":[2,1,2]那么,结果就是:1+1=2相邻两段的最小长度是多少,就能够组合成多少.

2020-08-10 11:53:08 137

原创 力扣初级算法(数组篇)

个人觉得这个模块还是很不错的,适合像我一样初学算法的童鞋入门,我一般使用c++做题的(c和java也会 )下面会简单介绍一下我的对每个题目的想法,之后可能会录制讲解视频放到B站供童鞋们参考!删除排序数组中的重复项给出一个升序数组,用O(1)的空间复杂度实现求得数组去重后数组,数组去重的话时间复杂度比较高,代价太大,因此需要换一种思考方向,那么我们可以从前往后覆盖这个数组,看下面的例子:给定 nums = [0,0,1,1,1,2,2,3,3,4]首先我们需要设定一个变量用来记录去重后数组的长

2020-08-10 11:34:39 669

原创 二分函数模板

裸二分函数模板,是力扣的一道题就是需要注意一下边界问题就行,不然容易死循环二分查找题目链接下面代码实现的是返回target出现的第一个位置,若没找到则返回-1class Solution {public: int search(vector<int>& nums, int target) { int l=0,r=nums.size()-1; while(l<r) { int mid=l+r&g

2020-06-27 19:33:18 197

原创 八数码

求最短路径,bfs可以解决看题目的意思就是给出一个3*3的矩阵,要求通过x的位置变化,然后让矩阵变的有序,即下面的矩阵1 2 34 5 67 8 x如果能够得到上面的矩阵,则输出x移动最少的次数,如果不能得到那么就输出-1对于这个问题的话我们可以把矩阵变成一个长度为9的字符串,然后bfs,每次都得找到x的位置,然后再转化成坐标(x,y)来进行判断上、下、左、右四个方向,哪个方向可以走(肯定是不能超出3*3矩阵的范围),然后再判断一下新的状态是否到达过,如果没有,那么到达这个新的状态x移动次.

2020-06-27 19:09:17 351

原创 树与图的广度优先遍历

板子题所有边的长度都相同的话就可以用bfs求最短路径,图的存储的话使用邻接表,因为数据太大的话使用邻接矩阵会爆。链式前向星实现邻接表。链式前向星实现:设置三个数组,一个数组h用来存节点,一个数组e用来存值,一个数组ne用来存下一个节点。我们需要设置索引idx来实现ne的查找,不然没法链接起来void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=idx++;}这个可以看成多个带头结点的单链表,h表示单链表个数,h[i]存的实际是索引idx,ne代

2020-06-27 11:04:18 192

原创 数独(通俗易懂)

通俗易懂的方法就是dfs简单爆搜,本文介绍的是最简单粗暴的方法,直接暴力搜索,没有进行任何优化。数独又称为9宫格(如下图所示)每一行的数字都不能重复每一列的数字都不能重复每一个小9宫格(方阵)数字都不能重复可以看做上面三个分别是一个包含1-9的集合因此我们可以设置三个二维数组来记录每一行、每一列、每一个方阵1-9的数字,从而确定每个点可以填哪些数。一维分别表示第几行、第几列、第几个方阵,然后二维用来记录哪些数字已经存在,1表示存在,0表示不存在。假定我们输入的数据如下:8 0 0 0

2020-06-26 12:24:04 2106 6

原创 学生成绩管理系统(c++链表)

下面是程序实现的功能:程序中将5门课程定为:语文、数学、英语、物理、化学下面是程序的运行截图:话不多说!直接上代码!!!#include <iostream>#include <string>#include <iomanip>#include <fstream>#define MAX 1005using namespace std;class stud{private: typedef struct Node { str

2020-06-13 21:34:15 2127 6

原创 回文串(两种方法)

回文串:一串正着读和反着读都是一样的一种特殊字符串例如:level、abba 这两个字符串就被称为回文串判断回文串,我推荐两种方法:反转比较法和中分比较法(名称是自己起的哈,有些丑陋)一、反转比较法对于c++的同学这个就十分简单了我们输入的字符串类型定位string型,然后使用reverse函数就可以,然后我们直接比较str1与str2是否相等,相等的话那么就表示输入的字符串为回文串。reverse(str2.begin(), str2.end());当然,输入char、int数组也是

2020-06-11 17:36:56 8130

原创 单调栈模板

单调栈顾名思义就是栈里的元素是单调的。但是这个怎么使用呢?怎么就能是单调的呢?看下面的例题题目给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。输入样例:53 4 2 7 5输出样例:-1 3 -1 2 2题目意思很容易理解那么我们先来看暴力做法,每次取一个数,与前面的数比较for(int i=0;i<n;i++){ for(int j=1;j=i;j++) { if(a[j]>=a[j-1]) { break;

2020-06-09 09:27:16 248 1

原创 前缀和模板

前缀和:用来快速求区间的和输入一个长度为n的整数序列。接下来再输入m个询问,每个询问输入一对l, r。对于每个询问,输出原序列中从第l个数到第r个数的和。1≤l≤r≤n,1≤n,m≤100000,−1000≤数列中元素的值≤1000我们如果每次都把l到r区间的数加起来,那么在数据最大的情况下,时间复杂度就达到了O(1e10+),这样我们显然是不能接受的这时候就用到的前缀和思想我们定义一个数组a用来存放输入的元素,然后再定义一个数组存放前i个元素的和(包括第i个元素),那么,如果我们求l到

2020-05-24 10:27:35 210

原创 二分模板

模板题目二分的话就是要注意边界问题!!!对于这个题目的话我们取左边界的话mid=(l+r)/2当a[mid]>=x,那么我们就继续往左边界走,[l,mid]当a[mid]<x,那么我们判断右半部分,[mid+1,r];结束条件就是l与r重合取右边界的话mid=(l+r+1)/2当a[mid]<=x,那么我们就继续往右边界走,[mid,r]当a[mid]>x,那么我们判断左半部分,[l,mid-1];结束条件就是l与r重合为什么取左边界就是(l+r),右边界就是

2020-05-15 11:14:07 138

原创 高精模板

以下给出的仅仅是模板哈~没有进行压位,加法和减法都大数,乘法是一个大数乘一个整数,除法是大数除以一个非零整数,只有加法没有处理前导零,模板假定输入符合正常输入。思路的话就是vector逆序存数据,设置一个变量表示进位A+B#include<iostream>#include<string>#include<vector>using namespace std;vector<int> a,b;vector<int> add(vect

2020-05-15 10:48:56 284

原创 快速排序

荒废了好多天,终于又要开始学习了~sort谁换不会用,是吧! 接下来的几天,记录一下基础算法的实现与个人想法快速排序题目快排的思路:第一步: 找一个数tmp。一般都是找数组中间位置那个值,平时也可能见到取左边界、右边界,再有就是随机取值。第二步: 然后把数组中的所有数字按这个数字分成两部分 (从小到大排序(升序)为例) 左面就是小于等于tmp的数,右面就是大于等于tmp的数(为什么与tmp等值的元素既可以出现在左半部分,又可以出现在有半部分呢,这个就是快排的精髓了,后面解释)第三步: 划分成

2020-05-13 18:50:47 168

原创 Ubuntu下强制关闭进程

首先:Alt+Ctrl+t打开终端然后输入:top,查看进程的PID我的这里PID就是5700,对应的程序就是mysql-workbench之后输入:q,返回终端最后输入:sudo kill PID窗口就会关闭,进程也被杀死了...

2020-04-12 16:52:09 2598

原创 Linux下mysql的可视化工具安装

这里我推荐使用MYSQL Workbench为什么用这个呢,因为不用破解(不用消费),安装快,分分钟就安装完了!!!只需一行安装命令sudo apt-get install mysql-workbench当然您要是为了使用更方便可以安装Navicat(这个是超级好用)但是!破解太难了v_v...

2020-04-10 13:57:40 953

原创 Ubuntu下mysql与qt连接

按照我之前的安装mysql与qt的教程,直接使用qt和mysql是会报错的这里附上一段代码,供检查使用#include "mainwindow.h"#include <QApplication>#include <QSqlDatabase>#include <QDebug>int main(int argc, char *argv[]){ ...

2020-04-10 13:42:25 453 1

原创 ERROR1698(28000):Access denied for user root@localhost解决方案

昨天安装完mysql没有问题,然后今天打开虚拟机发现了这个问题我们直接用linux的超级用户强制进入sudo mysql -uroot -p然后使用mysql这个数据库use mysql;然后查看用户和插件select user,plugin from user;然后我们更改插件就行(我的密码是:111111,你们填自己的密码就行)update user set authen...

2020-04-09 10:25:32 236

原创 Ubuntu下安装qt

我的Ubuntu版本是16.04,安装的是Qt5.12.2,下面是安装包提取码是:hp17https://pan.baidu.com/s/1lk7k1BctKNYXnrXDR296ew记得给文件夹最高权限,建议在root用户下操作然后安装依赖库即可sudo apt-get install build-essentialsudo apt-get install libqt4devsud...

2020-04-09 10:18:37 466

原创 Ubuntu下安装mysql

安装过程十分粗暴简单(安装的匆忙,有些步骤忘记截图了)执行三条命令即可(建议在root用户下操作)出现Y/N那就肯定输入Y回车出现ok的那个界面直接点ok,那个是让设置root密码,我们稍后设置sudo apt-get install mysql-server到这里的话有些童鞋的不能够安装,出现下面的报错Could not get lock /var/lib/dpkg/lock主要...

2020-04-08 22:11:17 153

原创 vs2017连接Mysql数据库

看到网上一些教程需要安装3个程序用来建立连接,个人觉得没什么必要,这里的话介绍一种不需要下载多余的插件就能成功连接的方法(亲测有用~,我的mysql版本是8.0.19,vs版本是2017 community)。只需要有mysql和vs2017即可第一步首先,我们先把解决方案平台改为x64,见图一图一第二步我们要连接mysql就肯定要用到mysql里的一些头文件,所以我们要添加一下附加...

2020-04-01 22:34:07 5327 11

原创 ORA-01017:invalid username/password;logond denied 解决办法

问题:ORACLE用SYS和SYSTEM默认密码登录提示 ORA-01017:invalidusername/password;logond denied我们都知道,system的默认密码是manager,为什么使用默认密码都无法正常登录呢?刚安装好后可以正常运行,久了没用反而用不了。这就很迷。不过可以使用下面的解决办法解决:Win +R或开始菜单-运行→输入以下命令进入超级账户:sqlp...

2020-03-30 17:14:09 2539

原创 ORA-28000: the account is locked 账户被锁

一般都是密码输入多次错误就会锁,我碰到的问题是scott可以正常登录,但是sys账号无法登录,显示ORA-28000: the account is locked解决:Win +R或开始菜单-运行—>输入以下命令:sqlplus / as sysdba进到超级管理员账户下执行解锁alter user sys account unlock;执行完解锁记得提交一下commit;之...

2020-03-30 17:02:40 1199

原创 Win10 新建响应慢甚至卡死的解决方案

每次新建一个文件或则文件夹,点击右键,把鼠标托到新建那里,就会卡半天,真的是超级烦,今天就解决了这个问题,希望对大家有所帮助!!!首先查看windows的版本win+r 打开“运行”对话框,输入 winver 查看windows版本一般出现问题的话版本是1809,我原先的版本就是1809,这是升级之后的版本:1909(据说1903版本也不存在卡顿的问题),现在完全解决了这个问题。如...

2020-03-23 13:24:07 1614

原创 1086 Tree Traversals Again (25分)

我们以这个题目来说一下:已知前序和中序求后序已知后序和中序求后序已知前序和后序求中序(蒟蒻认为这个应该是没办法实现的吧)后面的博客会更新怎么求层序我们先看这个题目,题目的意思就是入栈的顺序就是先序遍历,出栈的顺序就是后序遍历(个人认为比赛最好用递归,建树的话常常会碰到RE,指针用的不是很好会出现野指针,oj是过不了的)用样例来验证一下:先序遍历为:1 2 3 4 5 6中序遍历为:...

2020-03-13 11:59:07 209

原创 求解递归式时间复杂度

方法一:代换法(代入法)这种方法分为两个步骤:1、猜答案,我们只需要猜一下大致的形式比如 T(n)= 4T(n/2) +n通过观察该递归式,注意到当n加倍时,输出增加4倍,于是猜测该递归式时间复杂度为O(n2),即T(n) = O(n2) 。2、数学归纳法证明我们用带常数系数的展开T(k) ≤ c1k2-c2k(k<n)T(n) ≤4[c1(n/2)2-c2(n/2)]+n=...

2020-03-06 20:52:57 2432

原创 P1809 过河问题

题目描述有一个大晴天,Oliver与同学们一共N人出游,他们走到一条河的东岸边,想要过河到西岸。而东岸边有一条小船。船太小了,一次只能乘坐两人。每个人都有一个渡河时间T,船划到对岸的时间等于船上渡河时间较长的人所用时间。现在已知N个人的渡河时间T,Oliver想要你告诉他,他们最少要花费多少时间,才能使所有人都过河。注意,只有船在东岸(西岸)的人才能坐上船划到对岸。这道题是去年天梯赛...

2020-03-04 14:04:40 394

原创 螺旋矩阵

从左上角填上 1 开始,顺时针方向依次填入数字1 2 3 412 13 14 511 16 15 610 9 8 7大一的时候助教出的这道题目,当时我感觉好难呀,~~这是人做的题目呀,~~那时刚学二维数组,对这道题目手足无措,也是想了好久才想出来。最近刷题还能碰到这个题目,以及变形题目,看来这个题还是比较普遍的,那么今天就写一下题解。题目倒是很好理解呀,就是顺时针从...

2020-03-02 15:58:49 333 1

原创 动态规划的背包问题

传说中的背包有9讲,这里我们就介绍一下最基础的3讲01背包完全背包分组背包这三种背包是最经典的,也是我们经常碰到的,也是初学dp经常容易蒙圈的题目类型。01背包最经典的题目就是: 有n件物品,每件物品的重量为w[i],价值为v[i]。现有一个容量为V的背包,问如何选取物品放入背包,使得背包内物品的总价值最大。(其中每种物品都只有一件)我们设一个二维数组dp[i][j]来记录放入i...

2020-03-01 20:06:10 219

空空如也

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

TA关注的人

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