自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 springsecurity自定义数据库模型的认证与授权

Spring Security自定义数据库模型认证与授权

2022-10-04 23:23:43 719 1

原创 Spring Security默认数据库模型的认证于授权

spring security认证于授权

2022-10-04 00:24:33 645

原创 Vue export导出和import加不加{}的问题

vue import和export

2022-07-04 22:37:33 642

原创 Java实现验证码、数字加密、双色球系统小案例

16.2 验证码 /** * 随机生成指定长度验证码 * @param n 长度 * @return 生成的验证码 */ public static String createCode(int n){ String code = ""; for (int i = 0; i < n; i++) { Random random = new Random(); // 生成一个随

2022-04-27 23:38:15 652

原创 判断是否为二叉搜索树(中序遍历实现)

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:root = [2,1,3]输出:true示例 2:输入:root = [5,1,4,null,null,3,6]输出:false解释:根节点的值是 5 ,但是右子节点的值是 4 。算法:树中序遍历的顺序为左根右,根据二叉树搜索树的性质,如果一棵树满

2022-02-28 20:47:14 1480 1

原创 使用LocalDate类打印本月日历

当天的日期使用*号标识import java.time.*;public class CalendarTest { public static void main(String[] args){ LocalDate date = LocalDate.now(); //2022-01-14 int month = date.getMonthValue(); int today = date.getDayOfMonth(); dat

2022-01-14 20:29:46 135

原创 Windows常用快捷键、命令

Windows常用快捷键Ctrl + C : 复制Ctrl + V : 粘贴Ctrl + A : 全选Ctrl + X : 剪切Ctrl + Z : 撤销Ctrl + S : 保存Alt + F4 : 关闭窗口win + R : 打开运行窗口win + E : 打开我的电脑Shift + Del : 永久删除文件,删掉后在回收站里是找不着的win + tab : 查看所有窗口Alt + tab : 切换窗口,稳住Alt,然后点tab这个进程是管理桌面的,把它关掉桌面就不见了~

2021-11-18 19:38:48 530

原创 基础命令,热键,查看错误

显示日期和时间的指令:datedatedate +%Y/%m/%d //格式化显示年月日date +%H/%M/%S //显示时分秒显示日历的指令:cal(calendar)cal //列出当前月历cal 2021 //列出2021年的全部月历cal 8 2021 //列出2021年8月份的月历如果输入的指令不正确:cal 2021 13//提示月份不正确,请使用1-12的使用计算器的指令:bcbc //进入到.

2021-08-09 14:44:00 147

原创 第 k 个除数(试数法,约数)

给定两个整数 n 和 k,请你找到并输出能够整除 n 的第 k 小的正整数。输入格式一行,两个整数 n 和 k。输出格式输出能够整除 n 的第 k 小的整数。如果不存在,则输出 −1。数据范围1≤n≤1015,1≤k≤109。输入样例1:4 2输出样例1:2输入样例2:5 3输出样例2:-1算法:x能整除n,那么x一定是n的约数,因此可以先把n的所有约数先求出来;这里求约数的时候,用i * i <= n 比 i <= n / i 快~C++代码:#inc

2021-08-05 14:49:51 152

原创 隐藏字符串

给定一个由小写字母构成的字符串 s。我们称字符串 t 隐藏于字符串 s 中,如果它满足:存在一个字符串 s 的子序列,与其一一对应。该子序列的各个元素的下标可以构成一个等差序列。例如,字符串 aab 就隐藏于字符串 aaabb 中,因为 aaabb 的第 1,3,5 个元素刚好可以构成 aab,而这恰好是一个公差为 2 的等差数列。字符串 t 可能隐藏于字符串 s 中多次,这取决于共有多少个 s 的不同子序列满足与字符串 t 一一对应,且各个元素下标可以构成一个等差数列。例如,在字符串 aa

2021-08-01 10:30:16 2178

原创 点(推数学公式)

给定一个平面上的 N 个点,请你计算所有点对之间距离的平方和。输入格式第一行包含整数 N,表示点的个数。接下来 N 行,每行包含两个整数 X,Y,表示一个点的横纵坐标。注意,不保证所有点的位置各不相同。输出格式输出所有点对之间距离的平方和。数据范围1≤N≤105,−10000≤X,Y≤10000。输入样例:41 1-1 -11 -1-1 1输出样例:32算法:C++代码:#include <iostream>#include <cmath>

2021-07-27 21:25:36 470 1

原创 树中两个结点的最低公共祖先

class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(!root) return NULL; if(root == p || root == q) return root; auto left = lowestCommonAncestor(root->left,p,q); aut.

2021-07-27 11:33:04 78

原创 把字符串转换成整数(模拟)

C++代码:class Solution {public: int strToInt(string str) { int k = 0, n = str.size(); if(!n) return 0; long long res = 0,p = 1; while(str[k] == ' ') k++; if(str[k] == '+') k++; else if(str[k] == '-') p =.

2021-07-27 11:12:04 70

原创 构建乘积数组(前后缀分解)

给定一个数组A[0, 1, …, n-1],请构建一个数组B[0, 1, …, n-1],其中B中的元素B[i]=A[0]×A[1]×… ×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。样例输入:[1, 2, 3, 4, 5]输出:[120, 60, 40, 30, 24]思考题:能不能只使用常数空间?(除了输出的数组之外)算法:正常可以这样求但是不能用除法,那么先让B[i] = 前i - 1的乘积,然后再把后边i + 1 到n的乘积乘上,用一个变量p来存储前i-1的个数

2021-07-27 11:04:26 154

原创 二进制中1的个数(lowbit运算)

输入一个 32 位整数,输出该数二进制表示中 1 的个数。注意:负数在计算机中用其绝对值的补码来表示。样例1输入:9输出:2解释:9的二进制表示是1001,一共有2个1。样例2输入:-2输出:31解释:-2在计算机里会被表示成11111111111111111111111111111110,一共有31个1。class Solution {public: int NumberOf1(int n) { int cnt = 0; while(n

2021-07-26 23:54:33 259

原创 数值的整数次方(快速幂)

实现函数double Power(double base, int exponent),求base的 exponent次方。不得使用库函数,同时不需要考虑大数问题。只要输出结果与答案的绝对误差不超过 10−2 即视为正确。注意:不会出现底数和指数同为0的情况当底数为0时,指数一定为正样例1输入:10 ,2输出:100样例2输入:10 ,-2输出:0.01class Solution {public: double Power(double base, int expon

2021-07-26 23:54:21 105

原创 构造数组(单调栈,递推,枚举)

给定一个长度为 n 的整数数组 m1,m2,…,mn。现在,请你构造一个数组 a1,a2,…,an。对于构造的数组,有以下三点要求:∀i∈[1,n],1≤ai≤mi 成立。∀i∈[1,n], 不存在数对 j,k 同时满足 j<i<k 且 aj>ai<ak。数组中所有元素之和尽可能大。请输出任意合理方案。输入格式第一行包含整数 n。第二行包含 n 个整数 m1,m2,…,mn。输出格式输出 n 个整数,表示你构造出的数组 a1,a2,…,an。如果

2021-07-26 23:53:47 477 2

原创 不用加减乘除做加法

写一个函数,求两个整数之和,要求在函数体内不得使用 +、-、×、÷ 四则运算符号。样例输入:num1 = 1 , num2 = 2输出:3class Solution {public: int add(int num1, int num2){ while(num2){ int sum = num1 ^ num2;//先算两个数的和 int carry = (num1 & num2)<<1; //两个数的进位

2021-07-26 23:46:13 60

原创 求1+2+…+n

求 1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字及条件判断语句 (A?B:C)。样例输入:10输出:55class Solution {public: int getSum(int n) { int res = n; n > 0 && (res += getSum(n-1)); return res; }};...

2021-07-26 23:19:34 87

原创 股票的最大利润(贪心,线性扫描)

假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖 一次 该股票可能获得的利润是多少?例如一只股票在某些时间节点的价格为 [9,11,8,5,7,12,16,14]。如果我们能在价格为 5 的时候买入并在价格为 16 时卖出,则能收获最大的利润 11。样例输入:[9, 11, 8, 5, 7, 12, 16, 14]输出:11算法:枚举在第i天卖出,用一个变量来记录前i天中最小的值,每次取差的max。C++代码:class Solution {public: int max

2021-07-26 23:12:45 65

原创 圆圈中最后剩下的数字(约瑟夫问题)

0,1,…,n−1 这 n 个数字 (n>0) 排成一个圆圈,从数字 0 开始每次从这个圆圈里删除第 m 个数字。求出这个圆圈里剩下的最后一个数字。样例输入:n=5 , m=3输出:3循环队列:class Solution {public: int lastRemaining(int n, int m){ queue<int> q; for(int i = 0; i < n; i++) q.push(i); int

2021-07-26 22:53:27 156

原创 扑克牌的顺子

1、排序,然后找到不是0的最小数2、判断是否有重复数,如果有重复数一定不能组成顺子3、最大数 - 最小数 <= 4 ,缺的可以用0补;class Solution {public: bool isContinuous( vector<int> nums ) { if(nums.empty()) return false; sort(nums.begin(),nums.end()); int k = 0; wh.

2021-07-26 14:13:25 155

原创 骰子的点数(线性DP)

暴力:class Solution {public: vector<int> res; vector<int> numberOfDice(int n) { res = vector<int>(6*n+1,0); dfs(0,n,0); return vector<int>(res.begin()+n,res.end()); } void dfs(int k,int .

2021-07-26 13:47:26 106

原创 滑动窗口的最大值(单调队列)

给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如,如果输入数组 [2,3,4,2,6,2,5,1] 及滑动窗口的大小 3,那么一共存在 6 个滑动窗口,它们的最大值分别为 [4,4,6,6,6,5]。注意:数据保证 k 大于 0,且 k 小于等于数组长度。样例输入:[2, 3, 4, 2, 6, 2, 5, 1] , k=3输出: [4, 4, 6, 6, 6, 5]class Solution {public: vector<int> maxInWi

2021-07-26 12:59:50 54

原创 单调栈(模板)

给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。输入格式第一行包含整数 N,表示数列长度。第二行包含 N 个整数,表示整数数列。输出格式共一行,包含 N 个整数,其中第 i 个数表示第 i 个数的左边第一个比它小的数,如果不存在则输出 −1。数据范围1≤N≤1051≤数列中元素≤109输入样例:53 4 2 7 5输出样例:-1 3 -1 2 2C++代码:#include <iostream>using namespac

2021-07-25 11:23:06 67

原创 相等的和(哈希表)

给定 k 个整数序列,其中第 i 个序列的长度为 li。现在,请你进行以下操作:从 k 个序列中,选出两个序列 i,j(i≠j)。删掉序列 i 中的一个元素。删掉序列 j 中的一个元素。要求:操作完成后,序列 i 中的各元素之和等于序列 j 中的各元素之和。输出合理操作方案。我们规定,空序列的各元素之和为 0。输入格式第一行包含整数 k,表示共有 k 个序列。每个序列的输入占两行。第一行包含整数 li,表示序列长度。第二行包含 li 个整数 a1,a2,…,ali,表示序列中各元素的

2021-07-25 11:01:57 83

原创 平衡数组(有坑)

给定一个长度为 n 的数组 a1,a2,…,an,其中 ai=i。现在,请你选择一个整数 m,并对该数组进行 m 次操作。对于第 i 次操作(i 从 1 开始计数),你需要选定其中一个元素,并将选定元素以外的其他所有元素都增加 i。你的目标是在 m 次操作结束后,数组中各个元素的值都相等。m 不得超过 1000。请你输出具体合理方案。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据占一行,包含一个整数 n。输出格式每组数据输出占两行。第一行输出操作次数 m。第二行输出

2021-07-25 10:31:49 339

原创 数字在排序数组中出现的次数(二分)

统计一个数字在排序数组中出现的次数。例如输入排序数组 [1,2,3,3,3,3,4,5] 和数字 3,由于 3 在这个数组中出现了 4 次,因此输出 4。样例输入:[1, 2, 3, 3, 3, 3, 4, 5] , 3输出:4暴力:O(n)class Solution {public: int getNumberOfK(vector<int>& nums , int k) { int res = 0; for(auto x : n

2021-07-24 16:26:19 80

原创 两个链表的第一个公共结点

输入两个链表,找出它们的第一个公共结点。当不存在公共节点时,返回空节点。样例给出两个链表如下所示:A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3输出第一个公共节点c1算法:让p和q分别指向A链表和B链表的头开始走,如果p为空那么就接着从B链表的头开始走,q为从就从A链表的头开始走,总长度都

2021-07-24 16:06:45 125

原创 数组中的逆序对

在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。样例输入:[1,2,3,4,5,6,0]输出:6双重循环O(N^2)写法:class Solution {public: int inversePairs(vector<int>& nums) { int res = 0; for(int i = 0; i < nums.size(); i++)

2021-07-24 15:43:01 53

原创 字符流中第一个只出现一次的字符

请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符 go 时,第一个只出现一次的字符是 g。当从该字符流中读出前六个字符 google 时,第一个只出现一次的字符是 l。如果当前字符流没有存在出现一次的字符,返回 # 字符。样例输入:“google”输出:“ggg#ll”解释:每当字符流读入一个字符,就进行一次判断并输出当前的第一个只出现一次的字符。算法:用哈希表统计所有字符出现的次数;用一个队列维护字符流,队头前边的字符出现多次的话就可以删掉了,保

2021-07-24 15:14:26 127

原创 字符串中第一个只出现一次的字符

在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出b。如果字符串中不存在只出现一次的字符,返回 # 字符。样例:输入:“abaccdeff”输出:‘b’算法:遍历两遍字符串,用一个哈希表来存储每个字符出现的次数,第二次遍历的时候找到只出现一次的字符,如果没有返回#。C++代码:class Solution {public: char firstNotRepeatingChar(string s) { unordered_map<cha

2021-07-24 14:38:43 807

原创 丑数(多路归并)

我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。例如 6、8 都是丑数,但 14 不是,因为它包含质因子 7。求第 n 个丑数的值。样例输入:5输出:5注意:习惯上我们把 1 当做第一个丑数。算法:先观察它们的关系可以发现,会有s2和s1有丑数相同,或者s2和s3有相同的丑数,只要把s1,s2,s3,{1} 取并集;再观察:S1 / 2 = SS2 / 3 = SS3 / 5 = S2,3,5的倍数跟S都是有紧密 联系的,因此需要三个指针i,j,k指

2021-07-24 14:30:09 64

原创 最长不含重复字符的子字符串(双指针)

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。假设字符串中只包含从 a 到 z 的字符。样例输入:“abcabc”输出:3算法:用一个指针指向前,一个指针指向后,然后用一个哈希表来维护从前到后的两个指针之间的字母保证只出现一次,如果存在某个字母出现了多次,那么将前指针对应的字母在哈希表中删除,并向后移动一位.C++代码:class Solution {public: int longestSubstringWithoutDuplication(st

2021-07-24 14:02:27 187

原创 礼物的最大价值(DP)

在一个 m×n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格直到到达棋盘的右下角。给定一个棋盘及其上面的礼物,请计算你最多能拿到多少价值的礼物?注意:m,n>0样例:输入:[[2,3,1],[1,7,1],[4,6,1]]输出:19解释:沿着路径 2→3→7→6→1 可以得到拿到最大价值礼物。C++代码:class Solution {public: int get

2021-07-24 13:35:12 101

原创 机器人的运动范围

地上有一个 m 行和 n 列的方格,横纵坐标范围分别是 0∼m−1 和 0∼n−1。一个机器人从坐标 (0,0) 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格。但是不能进入行坐标和列坐标的数位之和大于 k 的格子。请问该机器人能够达到多少个格子?样例1输入:k=7, m=4, n=5输出:20样例2输入:k=18, m=40, n=40输出:1484解释:当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为

2021-07-23 23:52:57 173

原创 斐波那契数列

输入一个整数 n ,求斐波那契数列的第 n 项。假定从 0 开始,第 0 项为 0。(n≤39)样例输入整数 n=5返回 5class Solution {public: int Fibonacci(int n) { if(n == 0) return 0; else if(n == 1) return 1; return Fibonacci(n-1) + Fibonacci(n-2); }};...

2021-07-23 23:50:53 59

原创 从尾到头打印链表

输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值。返回的结果用数组存储。样例输入:[2, 3, 5]返回:[5, 3, 2]class Solution {public: vector<int> printListReversingly(ListNode* head) { vector<int> res; while(head){ res.push_back(head->val);

2021-07-23 23:49:46 49

原创 替换空格.

请实现一个函数,把字符串中的每个空格替换成"%20"。你可以假定输入字符串的长度最大是 1000。注意输出字符串的长度可能大于 1000。样例输入:“We are happy.”输出:“We%20are%20happy.”class Solution {public: string replaceSpaces(string &str) { string res = ""; for(auto s : str) if(s ==

2021-07-23 23:48:42 69

原创 把数字翻译成字符串(DP)

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 a,1 翻译成 b,……,11 翻译成 l,……,25 翻译成 z。一个数字可能有多个翻译。例如 12258 有 5 种不同的翻译,它们分别是 bccfi、bwfi、bczi、mcfi 和 mzi。请编程实现一个函数用来计算一个数字有多少种不同的翻译方法。样例输入:“12258”输出:5算法:C++代码:class Solution {public: int getTranslationCount(string s)

2021-07-23 23:44:43 119

空空如也

空空如也

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

TA关注的人

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