- 博客(46)
- 收藏
- 关注
原创 leetcode 13. 罗马数字转整数
13. 罗马数字转整数class Solution {public: int romanToInt(string s) { unordered_map<char, int> hash; hash['I'] = 1, hash['V'] = 5; hash['X'] = 10, hash['L'] = 50; hash['C'] = 100, hash['D'] = 500; hash['M'] =
2022-03-27 16:22:37
367
原创 leetcode 12. 整数转罗马数字
12. 整数转罗马数字cpp code:class Solution {public: string intToRoman(int num) { int values[] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }; string unit[] = {
2022-03-27 15:47:57
108
原创 11. 盛最多水的容器
leetcode11盛水最多的容器class Solution {public: int maxArea(vector<int>& height) { int ans = 0 ; for (int i = 0, j = height.size() - 1; i < j;) { ans = max(ans, min(height[i],height[j]) * (j - i));
2022-03-27 14:28:27
78
原创 leetcode23.括号生成cpp
contentcodeclass Solution {public: vector<string> ans; vector<string> generateParenthesis(int n) { dfs(n, 0, 0, ""); return ans; } void dfs(int n, int lc, int rc, string sec) { if (lc == n &&a
2022-03-27 10:03:31
80
原创 leetcode20.有序的括号
class Solution {public: bool isValid(string s) { stack<char> stk; for (char c : s) { if (c == '{' || c == '(' || c == '[') { stk.push(c); } else { .
2022-03-27 10:01:50
98
原创 leetcode21合并两个有序链表 Cpp
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next.
2022-03-27 09:53:53
354
原创 树的重心cpp
/** * Date: 2022年1月24日 * author: cubby * algorithm: tree & graph -- dfs * * dfs 模板 * * 在深度优先遍历过程中,是可以求出每一棵子树点的数量的, +它本身 1 就是这棵树的点数量且在删掉某个点时,可以算出其余所有连通块的大小(点数量), 其余连通块求法: 总点数n - 求的这棵树点数量T(n) = O(n + m) 深搜宽搜都是, 因为每个点只会遍历一次。 与点数和边数呈线性关系const
2022-01-24 10:47:33
479
原创 模拟散列表
维护一个集合,支持如下几种操作:I x,插入一个数 x;Q x,询问数 x 是否在集合中出现过;现在要进行 N 次操作,对于每个询问操作输出对应的结果。输入格式第一行包含整数 N,表示操作数量。接下来 N 行,每行包含一个操作指令,操作指令为 I x,Q x 中的一种。输出格式对于每个询问指令 Q x,输出一个询问结果,如果 x 在集合中出现过,则输出 Yes,否则输出 No。每个结果占一行。数据范围1≤N≤105−109≤x≤109输入样例:5I 1I 2I 3Q 2
2022-01-10 20:07:55
416
原创 最大异或对(Trie树)
题目:在给定的 N 个整数 A1,A2……AN 中选出两个进行 xor(异或)运算,得到的结果最大是多少?输入格式第一行输入一个整数 N。第二行输入 N 个整数 A1~AN。输出格式输出一个整数表示答案。数据范围1≤N≤105,0≤Ai<231输入样例:31 2 3输出样例:3#include <iostream>#include <algorithm>#define IOS ios::sync_with_stdio(false); cin.
2022-01-08 11:42:30
182
原创 Trie树 字符串统计
维护一个字符串集合,支持两种操作:I x向集合中插入一个字符串 x;Q x 询问一个字符串在集合中出现了多少次。共有 N个操作,输入的字符串总长度不超过 105,字符串仅包含小写英文字母。输入格式第一行包含整数 N,表示操作数。接下来 N 行,每行包含一个操作指令,指令为 I x或 Q x中的一种。输出格式对于每个询问指令 Q x,都要输出一个整数作为结果,表示x在集合中出现的次数。每个结果占一行。数据范围1≤N≤2∗104输入样例:5I abcQ abcQ abI ab
2022-01-06 17:34:08
85
原创 滑动窗口(cpp)
滑动窗口维护队列 满足一个单调性找窗口中的最小值: 3 -1 -3后边一个元素比当前元素小的话,当前元素就没用了,冗余元素 删掉。当遍历完整个数组 所有的冗余元素都删掉了, 剩下的就是一个单调递增的序列。具有单调性方便: 在遍历时就维护了, 取当前窗口的队头即可,就是最小值每次 O(1)的复杂度 , 整体的复杂度就是O(n)的将队列中的没有用的元素删掉一>具有 了单调性可以用0(1)时间从队头/队尾取出最值这个做法算法,稳健,可以找到当前窗口最值 或找出离他最近的比他大/小的第
2022-01-05 16:02:36
427
原创 Java基于注解的查询修改数据库内容及原理
User实体类UserDao.java注解基于接口实现mybatis-config.xml 核心配置文件中绑定接口测试类:UserDaoTest本质:是反射机制底层实现:动态代理 (代理对象,真实对象)
2022-01-01 12:48:32
602
原创 区间合并问题cpp
题目假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。输入格式第一行包含两个整数 n 和 m。接下来 n 行,每行包含两个整数 x 和 c。再接下来 m 行,每行包含两个整数 l 和 r。输出格式共 m 行,每行输出一个询问中所求的区间内数字和。数据范围−109≤x≤109,1≤n,m≤105,−109
2021-12-31 15:56:32
571
原创 二进制中1的个数 “lowbit原理“
二进制中1的个数算法(lowbit) O(nlogn)使用lowbit操作,进行,每次lowbit操作截取一个数字最后一个1后面的所有位,每次减去lowbit得到的数字,直到数字减到0,就得到了最终1的个数,lowbit原理根据计算机负数表示的特点,如一个数字原码是10001000,他的负数表示形势是补码,就是反码+1,反码是01110111,加一则是01111000,二者按位与得到了1000,就是我们想要的lowbit操作输入样例:51 2 3 4 5输出样例:1 1 2 1 2
2021-12-31 15:54:20
342
原创 最长连续不重复子序列cpp
最长连续不重复子序列定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数 n。第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤105输入样例:51 2 2 3 5输出样例:3核心思路:遍历数组a中的每一个元素a[i], 对于每一个i,找到j使得双指针[j, i]维护的是以a[i]结尾的最长连续不重复子序列,长度为i -
2021-12-30 10:20:35
226
原创 二维前缀和
前缀和对于每次查询,只需执行sum[r]-sum[l-1] ,时间复杂度为O(1)#include <iostream>using namespace std;#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)const int N = 100010;int n, m;int a[N], s[N];int main(){ IOS; cin >> n >> m;
2021-12-28 11:20:14
475
原创 Spring Boot 之 “Hello,World“
序言:SpringBoot 的核心理念是约定优于配置,例如在资源目录的static放置静态资源就能直接访问,templates目录放置动态页面就能自动初始化和实现访问,例如Thymeleaf、FreeMaker等。创建项目:参考链接1 , 参考链接2项目名称:Demoimport org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplicat
2021-12-27 19:21:59
187
原创 高精度乘法(含:高精度*低精度、高精度*高精度)
题目:给定两个非负整数(不含前导 0) A 和 B,请你计算 A×B 的值。输入格式共两行,第一行包含整数 A,第二行包含整数 B。输出格式共一行,包含 A×B 的值。数据范围1≤A的长度≤1000000≤B≤10000输入样例:23输出样例:6输入样例2:(高精度*高精度)1234567890123456789012345678901234567890输出样例2:152415787532388367501905199875019052100高精度 * 低精度例如 1
2021-12-27 11:09:00
898
原创 高精度加法 C++、Java 实现
高精度整数加法给定两个正整数(不含前导 0),计算它们的和。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的和。数据范围1≤整数长度≤100000输入样例:1223输出样例:35c++#include <iostream>using namespace std;const int N = 100010;int A[N], B[N], C[N];int cnt ;#define IOS ios::sync_with_stdio(false); c
2021-12-26 18:37:04
412
原创 求数的三次方根 浮点数二分模板
求数的三次方根给定一个浮点数 n,求它的三次方根。输入格式共一行,包含一个浮点数 n。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留 6 位小数。数据范围−10000≤n≤10000输入样例:1000.00输出样例:10.000000浮点数二分(模板):double l=a,r=b;while(r-l>c){ double mid=(l+r)/2; if(check(mid)) l=mid; else r=mid;}c++#i
2021-12-26 17:03:38
116
原创 【已解决】idea包(目录)展开 最新idea 使空包目录展开
最新解决多级目录展开:创建的多级包不能如愿展开显示, 如下:设置中取消勾选 Compact Middle packages如果没有此选项则如下操作即可:在此取消即可解决后:
2021-12-24 21:05:28
5068
4
原创 归并(分治) 求逆序对的数量
/** * 归并排序merge_sort 分治算法 * 1. 确定分界点 mid = l + r >> 1 * 2. 递归排序 left right * 3. 归并 合二为一 * * T(n) = nLog(N) * * 边界分析: * 为什么不用 mid - 1 作为分隔线呢 即 merge_sort(q, l, mid - 1 ), merge_sort(q, mid, r) 因为 mid = l + r >> 1 是向下取整,mid 有
2021-12-24 11:39:14
90
原创 第k个数, (第k个大的数)
第k个数给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数。输入格式第一行包含两个整数 n 和 k。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整数数列。输出格式输出一个整数,表示数列的第 k 小数。数据范围1≤n≤100000,1≤k≤n输入样例:5 32 4 1 5 3输出样例:3/** * * * l,r 区间中第k个最大的数 * [l,r,k]; * sl = j - l + 1; 中
2021-12-23 16:11:03
1344
原创 快排 快速排序 c++ (IOS 提升cin cout 速度)
快速排序给定你一个长度为 n 的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5优化前:代码如下:/** * 快速排序 —— 分治 * quick_sort() *
2021-12-23 15:35:41
1915
原创 《你变了,世界就变了》
你变了,世界就变了自我认识,改变世界先改变自己不论事情糟糕到何种地步,只要还有一线希望,我们都要努力挽救。但是如果常识告诉我们,事情已经不可避免,也不可能再有任何转机时,为了保持理智,我们就要学会接受事实,承受它带给我们的苦痛和挫折。——戴尔·卡耐基不畏批评,正视自己的错误 卡耐基箴言:记下自己干过的蠢事,提出自我批评。拿破仑被放逐到圣海伦岛时说:“我的失败完全是自己的责任,不能怪罪任何人。我最大的敌人其实是我自己,这也是造成我的悲惨命运的主因。”做一个内心强大的人 卡耐基箴言:人类内心的力量惊
2021-12-13 16:13:03
441
原创 排列式算法题
问题描述7254是一个不寻常的数,因为它可以表示为7254 = 39 x 186,这个式子中1~9每个数字正好出现一次 输出所有这样的不同的式子(乘数交换被认为是相同的式子) 结果小的先输出;结果相同的,较小的乘数较小的先输出。输出格式每一行输出一个式子,式子中的等号前后空格、乘号(用字母x代表)前后空格 较小的乘数写在前面样例输出问题中的式子在结果中会出现一行如下:7254 = 39 x 186思路为了满足1 ~ 9 共九位数刚好都用3位数 只能 = 1位数 * 3 位数
2021-12-12 10:04:11
2238
1
原创 git免密登录 git remote + ssh地址
新建一个仓库以后echo "# my-study" >> README.mdgit initgit add README.mdgit commit -m "first commit"git remote add origin git@github.com:xxx.gitgit push -u origin mastercommit后git remote add origin git@github.com:xxx.gitgit push -u origin master.
2021-11-03 09:24:52
600
原创 数据库连接池Java
数据库连接池技术带来的优势:1. 资源重用由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量)。2. 更快的系统响应速度数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,从而缩减了系统整体响应时间。3. 新的资源分配手段对于多应用共享同一数
2021-11-02 21:17:06
83
原创 题目描述:判断一个非负整数是否为两个整数的平方和。
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。示例 1:输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5示例 2:输入:c = 3输出:false题目链接:点我跳转leetcode 解题方案:可以使用双指针得到两个数,使其平方和为 target。本题的关键是右指针的初始化,实现剪枝,从而降低时间复杂度。设右指针为 x,左指针固定为 0,为了使 02 + x2 的值尽可能接近 target,我们可以将 x 取为 sqrt
2021-10-11 17:33:35
1198
原创 JavaScript 笔记
学习笔记 部分转载自网络#目录[TOC]JavaScript 笔记JavaScript负责页面中的的行为。它是一门运行在浏览器端的脚本语言。JS的编写的位置1.可以编写到标签的指定属性中<button onclick="alert('hello');">我是按钮</button> <a href="javascript:alert('aaa');">超链接</a> 2.可以编写到script标签中<script type
2021-10-09 15:47:55
107
原创 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成class Solution {public: string longestPalindrome(string s) {
2021-10-09 15:28:29
68
原创 smbms商城项目
gitee地址: smbms项目通过 git bash 克隆到本地。不会git可以直接点链接后下载。或者通过IDEA软件导入git项目,出现的错误:1.java文件代码的错误if(!StringUtils.isNullOrEmpty(proCode)){由于自己依赖没有配好或者是导入Idea的问题,这个类isNullOrEmpty的方法用不了, 所以全部转换成了 形如if(! proCode.equals(null) || ! proCode.equals("") ){的代码,就ok了
2021-09-27 20:50:07
71
原创 git配置本地ssh连接github、码云
git ssh密钥创建和重置安装git后, 右键打开Git Bash查看是否配置过密钥cd ~/.ssh如果没有配置,则创建: ssh-keygen -t rsa -C "youemail@qq.com"一直enter即可。使用以下命令ls 查看当前目录所有文件cat id_rsa.pub查看公钥内容通过复制此公钥,粘贴到github或者码云上,下面以码云为例:点击右上角头像,设置点击SSH公钥把复制的密钥粘贴到这确定即可。...
2021-09-27 17:01:17
330
原创 ssh 学习笔记
ssh基本用法远程登录服务器:ssh user@hostnameuser: 用户名hostname: IP地址或域名第一次登录时会提示:The authenticity of host ‘123.57.47.211 (123.57.47.211)’ can’t be established.ECDSA key fingerprint is SHA256:iy237yysfCe013/l+kpDGfEG9xxHxm0dnxnAbJTPpG8.Are you sure you want to
2021-09-27 16:29:16
127
原创 git学习经验
gitgit init 初始化git status 查看当前状态git add xxx 将文件加到缓存区git commit -m "1add readme.txt " 提交,并添加注释git restore --stage readme.txt 将readme.txt文件 从缓存区删除git diff readme.txt 比对持久化就是存起来当想要看历史版本 提交的记录:git log 多行显示git log --pretty=oneline 一行显示回滚, 到以前的版本
2021-09-27 15:07:32
117
原创 摘花生 动态规划 简单题
题目她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。Hello Kitty只能向东或向南走,不能向西或向北走。问Hello Kitty最多能够摘到多少颗花生。输入格式第一行是一个整数T,代表一共有多少组数据。接下来是T组数据。每组数据的第一行是两个整数,分别代表花生苗的行数R和列数 C。每组数据的接下来R行数据,从北向南依次描述每行花生苗的情况。每行数据有C个整数
2021-09-23 19:29:10
169
原创 CentOS 7 安装tmux 小心得
CentOS 7 安装tmux 小心得查了半天,结果只需要进入root权限 su root 输入密码后,yum install tmux即可安装。使用技巧方法:1)进入tmux面板后,一定要先按ctrl+b,然后松开,再按其他的组合键才生效。2)常用到的几个组合键:ctrl+b ? 显示快捷键帮助ctrl+b 空格键 采用下一个内置布局,这个很有意思,在多屏时,用这个就会将多有屏幕竖着展示ctrl+b ! 把当前窗口变为新窗口ct
2021-09-12 21:21:29
1496
原创 启动tomcat时(Java),输出的字体乱码解决方法
问题启动时,输出信息乱码如下解决方案:找到Tomcat目录下conf文件夹中的logging.properties文件,打开logging.properties文件,找到文件中的java.util.logging.ConsoleHandler.encoding = UTF-8,将其中的UTF-8改为GBK,保存后重启Tomcat服务,启动后就会看到刚才的乱码已经转换过来了。...
2021-09-03 18:33:45
361
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人