自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第三十四天|62.不同路径、63.不同路径、343.整数拆分(可跳过)、96.不同的二叉搜索树(未写,后补)

dp[4]的值 = max(dp[1]*dp[3], 1*3,dp[1]*3, 1*dp[3]),这里把1、3分别和dp[1]、dp[3]的所有可能性都试一遍,由于穷举所有可能性了,答案一定在穷举范围内。dp[5] = dp[1]*dp[4], dp[2]*d[3] ,(由于dp[3]*dp[2]和dp[4]*dp[1]是重复的,不需考虑)(3)所以上述式子要改成,dp[4]的值 = max(dp[4], dp[1]*dp[3], 1*3,dp[1]*3, 1*dp[3])的遍历从1到n/2。

2025-01-12 23:56:06 1013

原创 代码随想录算法训练营第三十二天|509.斐波那契数、70.爬楼梯、746.使用最小花费爬楼梯

整体看感觉思路可行:即,dp[i] = min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2])。2阶:min(到达(2-1)阶的费用+(2-1)阶跳的费用 , 到达(2-2)阶的费用 +(2-2)阶跳的费用)。3阶:min(到达(3-1)阶的费用+(3-1)阶跳的费用 , 到达(3-2)阶的费用 +(3-2)阶跳的费用)。4阶:min(到达(4-1)阶的费用+(4-1)阶跳的费用 , 到达(4-2)阶的费用 +(4-2)阶跳的费用)。dp[i]表示到达第i个台阶所花的最小费用。

2025-01-11 23:53:20 1023

原创 代码随想录算法训练营第二十五天| 491.递增子序列、46.全排列、47.全排列、332.重新安排行程(可跳过)、51.N皇后(适当跳过)、37.解数独(适当跳过)

对应的位置可更改,所以把元素排序,然后用当前元素 == 上一个元素,且上一个元素未使用过 来去重,因为上一个元素优先于当前元素的使用,同一层上一个元素使用过了,那么对于相同的当前元素,再使用,相当于走上一个元素的老路,所以满足当前元素 == 上一个元素,且上一个元素未使用的条件,当前元素就不选。思路(程序参考题解的):两重循环遍历所有位置,如果当前位置已有数据,则跳过,当前数据未填充,则遍历1到9,找个可能的数字填进去,然后递归重复这个过程,直到所有位置都填充完或者无解为止。难点:数据对应的位置不可更改。

2025-01-04 17:25:04 550

原创 代码随想录算法训练营第二十四天| 93.复原IP地址、78.子集、90.子集I

原因:由于程序选择数据的逻辑过程是按顺序每个数据必选,那么上一个数据一定是优先于当前数据的选择的,上一个数据的所有组合试过完毕后,上一个数据才会出现是未被选过的状态,所以当前数据==上一个数据时,当前数据如果要选择,相当于走上一个数据的老路,就会出现重复组合的情况。由于相同数据在一块,如果当前数据==上一个数据,上一个数据未被选过,当前数据要选,则一定是重复组合。根据切割的起始位置进行切割,切割长度为1到可切割长度。dep:得到的子串个数,用于判断是否得到了4个子串。startIndex:切割的起始位置。

2025-01-03 15:36:26 471

原创 代码随想录算法训练营第二十三天| 39.组合总和、40.组合总和、131.分割回文串

某个位置的字符的截取长度从1到字符串的长度(这里可以通过if语句控制合法长度,也可以直接计算剩余部分的长度)candidates[0]到candidates[candidates.size()-1]中选一个数字。last:如果至少一个数字的被选数量不同,则两种组合是不同的,所以每次选的数要>=上一个数的位置。如果截取段的字符串是回文串,就从该段字符的右边字符继续做截取操作。思路应该都差不多,就是如何把重复逻辑变成递归的实现。candidates:待选择的数组。cur:要截取的起始位置。

2025-01-02 18:36:50 304

原创 代码随想录算法训练营第二十二天| 77.组合、216.组合总和、17.电话号码的字母组合

(2)实现五十重循环实现:3个数中选50个(可重复),求所有可能,先把3重循环改造成方便复制粘贴的形式。难点:“23”,得到一个2,如何遍历abc,得到a,然后要得到3,得到3,如何遍历“def”。(5)上述问题改成n重循环实现:n个数中选n个,必须是递增数据,求所有可能(n

2025-01-02 00:15:05 473

原创 代码随想录算法训练营第二十一天| 669.修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

难点的解决方案:定一个函数外的相对全局变量,记录每次遍历的节点,这样下一个节点就可以通过 这个记录变量, 得到上一个节点信息。数组中间位置元素为当前节点, 把数组分成两部分,数组中间位置元素为当前节点, 把数组分成两部分,当前节点的左子树用数组的左部分做同样的操作,当前节点的右子树用数组的右部分做同样的操作。当前节点的左子树用数组的左部分做同样的操作,当前节点的右子树用数组的右部分做同样的操作。这个思路参考代码随想录的,把当前节点更新为有效节点。难点:如果在遍历的过程中 获知 上一个节点的val。

2025-01-01 00:06:20 395

原创 代码随想录算法训练营第二十天| 235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

};*/public:// 备份原树,避免下面while循环结束找不到要返回的树// 记录新val所在子树 的 上一层节点,即父节点while(cur!if(cur->val > val) // 如果当前节点val > 新val,新val要插入到左子树else if(cur->val < val) // 如果当前节点val < 新val,新val要插入到右子树。

2024-12-30 22:56:54 691

原创 代码随想录算法训练营第十八天| 530.二叉搜索树的最小绝对差 、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

思路:做了530.二叉搜索树的最小绝对差和501.二叉搜索树中的众数后,这题应该感觉颇深,直接想到当前节点 如果 左、右子树 == p或 q,那么当前节点就是公共祖先,进而想到后序遍历(左 右 中,即左右走完后回到中的想法),接下来就是解决如果最近公共祖先的问题。第一想法:定义三个变量记录左、右、中三个树的状态,如果当前层的三个树中 有 2个树存在p、q(true),则当前树就为公共祖先,第一次满足是公共祖先后,令上层的子树状态 不存在 p或q(false),就解决最近公共祖先的问题了。

2024-12-28 23:27:48 826

原创 代码随想录算法训练营第十七天| 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

不能单纯的比较左节点小于中间节点,右节点大于中间节点就完事了,因为左节点所在的子树可能存在大于中间节点的情况,右节点所在的子树可能存在小于中间节点的情况。(2)根节点的左子树 = root1左子树 合并 root2左子树 (同时进入root1的左节点、root2的左节点 构造左子树)(3)根节点的右子树 = root1右子树 合并 root2右子树 (同时进入root1的右节点、root2的右节点 构造右子树)(2) 当前节点的左节点 为 当前数组最大值位置的左半部分中的最大值。

2024-12-27 22:59:20 416

原创 代码随想录算法训练营第十六天| 513.找树左下角的值(统一迭代+递归)、112.路径总和、113.路径总和II、106.从中序与后序遍历序列构造二叉树

首先回忆一下如何根据两个顺序构造一个唯一的二叉树,相信理论知识大家应该都清楚,就是以 后序数组的最后一个元素为切割点,先切中序数组,根据中序数组,反过来再切后序数组。注意:这题题目理解上可能会出错,如果仅剩一个,不管是不是右节点,都是最左边的那个,如[0,null,-1],而不是最底层的最左的左节点。(1)这里用到先遍历左节点,再遍历右节点的递归写法,由于先遍历左节点,所以当前节点深度depth 要 > 答案节点深度resDepth。遍历每一层的节点,每得到新的一层,新的一层的最左边的第一个节点就是答案。

2024-12-26 23:09:00 612

原创 代码随想录算法训练营第十五天| 110.平衡二叉树(递归)、257. 二叉树的所有路径(递归)、404.左叶子之和(递归)、222.完全二叉树的节点个数(递归)

当前节点的路径要进入左节点,然后左节点的路径结束后,需要回到当前节点,然后再从当前节点进入右节点的情况,这里就想到了递归的回溯。根据题目理解,先记录根节点,然后先得到左路径,左路径存储完,再得到右路径,右路径存储完,当前节点的路径就存储结束。如果 当前节点的左节点不为空,且 如果当前节点的左节点是叶子节点就累加。当前树的节点个数 = 左子树的节点个数 + 右子树的节点个数 + 1。然后进入左节点、进入右节点(遍历所有节点)得到左子树的高度、得到右子树的高度。左右子树高度差>1就是非平衡树。

2024-12-26 00:07:41 254

原创 代码随想录算法训练营第十四天| 226.翻转二叉树(递归)、 101. 对称二叉树(递归)、 104.二叉树的最大深度 (递归)、111.二叉树的最小深度(递归)

当前树的深度 = max(左子树深度,右子树深度)+1。核心思路:把每一个节点的左节点和右节点地址进行交换。用“二叉树的最大深度”的思路需要考虑下图的情况。

2024-12-24 23:46:06 269

原创 代码随想录算法训练营第十三天| 144. 二叉树的前序遍历、94. 二叉树的中序遍历、145. 二叉树的后序遍历(递归+统一迭代)、层序遍历(102)

看到中左右,”中“记录到res中,然后“左”也要进行中左右的操作,”左“在重复相同的操作后回来(在递 归回来)后,”右“也要做相同的操作,进而用递归程序实现。心得:可以找一两道简单的递归题,打草稿模拟一下递归的执行过程,就对递归的执行过程有了印象,然后看到递归的程序,递归的执行过程就可以在脑海里大致模拟出来了。核心思路:根据遍历顺序进行相反顺序入栈,如前序遍历:中左右,入栈顺序:右左中 ,是中就输出。核心思路:根据遍历顺序进行相反顺序入栈,如后序遍历:左右中,入栈顺序:中右左。参考前序遍历的想法。

2024-12-24 00:17:06 490

原创 代码随想录算法训练营第十一天| 150. 逆波兰表达式求值 、 239. 滑动窗口最大值、347.前 K 个高频元素

栈、队列的应用

2024-12-22 00:12:38 938

原创 代码随想录算法训练营第十天| 232.用栈实现队列、225.用队列实现栈、20.有效的括号、1047.删除字符串中的所有相邻重复项

写这篇博客时,发现这里的sIn和sOut可以作为独立的两个部分,sIn仅入栈,sOut仅出栈,当sOut没有数据的时候,再把sIn反转到sOut里面,这样下次新数据入栈的导致栈元素顺序不对的问题也就解决了,那么恢复原栈的操作recoverStack()这个函数也就不需要实现了。如(栈的右边是栈顶):sIn[1,2,3] -> sOut[3,2,1],sOut的栈顶元素是1,也就是说取出栈顶元素的操作就是反转栈(sIn)。核心思路:不相等则进栈,相等则出栈。核心思路:不匹配进栈,匹配则出栈。

2024-12-20 19:58:29 461

原创 代码随想录算法训练营第九天| 151.翻转字符串里的单词、卡码网:55.右旋转字符串

将要涉及到KMP算法

2024-12-19 22:01:54 410

原创 代码随想录算法训练营第八天| 344.反转字符串、541. 反转字符串II、 卡码网:54.替换数字

用到了resize()的写法进行拓宽了字符串的位置,然后将有效数据填充到对应的位置。

2024-12-18 20:02:32 313

原创 代码随想录算法训练营第七天| 454.四数相加II、383. 赎金信、15. 三数之和、18.四数之和

哈希:键值对数组set(集合)map(映射)这几次的难点在于双指针的解题策略,这几个解题思路需要脑海里加深印象。

2024-12-17 14:37:24 1036

原创 代码随想录算法训练营第六天| 242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和

思路:数据分析,给一个target,当拿到一个数据nums[i]时,如何知道是否存在target-nums[i]与它能够进行组合,按照这个想法,可以考虑把数据进行标记,拿到nums[i]时,看一下target-nums[i]这个数据是否有被标记过。按照上面的思路,程序的实现想法就是把每个数据进行键值对记录,如mp[2] = 1, mp[7] = 2, mp[11] = 3, mp[15] = 4,然后判断mp[target-2]!这时候又要考虑如果存在两个相等的数据,那么mp[target-2]!

2024-12-16 16:44:50 390

原创 代码随想录算法训练营第四天| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

思路:用了快慢指针的写法,核心的是实现做了宽距限定,类似于一只狗在前面领着,后面一个人牵着,狗走一步,人走一步,狗与人之间时刻保持的固定距离,当狗走到终点时,人就在倒数第N个节点位置,为了解决链表删除的问题,要使人在倒数N+1的位置,狗要先走N+1步。心得:这一题的难点不在于交换,根据数据或者图形可以了解怎么操作,难点在于如何把交换的过程 进行循环的操作,想到了dummynode的解决策略,但是没有理清楚,看了参考程序的dummyNode->next = head;

2024-12-15 22:19:21 473 1

原创 代码随想录算法训练营第三天| 203.移除链表元素、707.设计链表、206.反转链表

说明:这一题写的有点费力,审题不细致,在addAtIndex()的读题时,没有考虑到index==len的情况,导致不对,没有发现错误,然后通过printCheck()调试对比输出数据以及根据输出数据对比题目信息,找到了问题。说明:用的双链表,没画图,根据注释的逻辑顺序,应该是能看懂的,我给出了删除的模拟样例和说明。tmp的1到6表示翻转链表的节点加入顺序。

2024-12-13 23:16:03 341

原创 代码随想录算法训练营第二天|209.长度最小的子数组、 59.螺旋矩阵II

分析整个过程,我们会发现sum要一直累加,加到满足sum>=target时,要舍去左端点,这时候要考虑是否会存在需要删除多次左端点的情况,列数据验证后是存在的,那么就再定义一个变量维护左端点。这题要求某一个区间的和>=target,且这个区间长度要尽可能小,比较容易想到的是分别穷举左、右端点,算一下,时间复杂度在O(n*n),就不写这个方法了。这是一道数据分析题,分析数据在移动时上、下、左、右位置的变化,然后根据位置的变化填充数据,有点类似于双指针的想法。但是和题目所要求的最小子数组不符,

2024-12-12 19:41:58 441

原创 代码随想录算法训练营第一天 | 704二分查找、27移除元素、977有序平方根

核心思路:通过对数据的分析发现(有点急躁,缺乏分析,最后根据代码随想录文档才发现的),程序的表达:每次对两个可能的最大数进行比较,谁大就存储谁,然后再找新的两个最大值。那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间。数组其实是有序的, 只不过负数平方之后可能成为最大数了。核心思路:把数据分别平方后,对数组排序。(2) 只有一个数据。

2024-12-11 17:04:35 493

原创 nacos 运行错误

如果是52.0的错误或者Virtual machine的错误将环境变量改为1.8及以上版本,退出并重进cmd,运行startup.cmd命令

2020-12-22 20:18:35 414

原创 js 使select不可点击

$("#AuditStatus").attr("disabled","disabled");

2020-11-30 18:05:03 1348

原创 2020-11-30 Sql的if语句

//其中两个?值相等。select * from Clazz where case when ? is not null then ID=? else 1//判断第一个参数?是否为空,如果不为空则:select * from Clazz where ID=?;//判断第一个参数?是否为空,如果为空,则:select * from Clazz where 1;...

2020-11-30 16:15:46 155

原创 java excel导出

public void dataExportExcel(HttpServletResponse response){ String fileName = "xxx.xls"; response.setCharacterEncoding("utf-8"); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;fileName=".

2020-11-05 18:54:40 129

原创 Servlet容器适用场景

Jetter(长连接):web聊天Undertow(不支持JSP)

2020-09-28 12:07:46 321

转载 表单重复提交如何解决?

表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如:1. 点击提交按钮两次。2. 点击刷新按钮。3. 使用浏览器后退按钮重复之前的操作,导致重复提交表单。4. 使用浏览器历史记录重复提交表单。5. 浏览器重复的HTTP请求。  用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题。我们可以从客户端和服务器端一起着手,设法避免同一表单的重复提交。1. 服务端解决方法  1. 在ses

2020-09-28 10:32:08 978

原创 2020-09-18 H5跳转小程序

HTML界面1.引入js<!-- 下面meta标签是对https下引用http开头的js出现bug用的--><meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"><script src="/js/jquery-1.12.4.js"></script><script src="http://res2.wx.qq.com/open/js/j

2020-09-18 22:21:10 615

原创 oracle 的Linstener refused of connection的问题

这几次由于操作不当,经常遇到数据库连接不上的问题,但是在cmd状态下可以进行连接,在网上找了很久,还是得不到解决,翻了下书,在这里写下我的解决方法。第一步:打开Net Configuration Assistant第二步:选择本地网络服务名配置,准备进行oracle的重新配置第三步:选择重新配置第三步:一直选下一步直到下图,服务名为orcl(当时是这么解决的)...

2019-04-04 12:19:57 504

空空如也

空空如也

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

TA关注的人

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