自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第 26 场 蓝桥月赛 部分题解

找到大于等于k+curVal的最近下标,更新当前位置,然后又往后找大于等于k+curVal的最近下标,就这样直到没有了。时间复杂度有点高,所以没全过。分析:通过画图找到规律,可以在对角线上放,要么在(1,j)和(j,1)上放,这次在前面的基础上来放,难点就是找规律,dp[i]=dp[i-1]+(n-1) * dp[i-2] ,dp[i]表示在i*i的盘子上的摆法。分析:给你一些汤圆,你要知道无论怎么倒,最后得到的数量不会增加。,在给定的k下,找出满足条件的最多人数。,差异越大越好,最小的肯定选中,然后用。

2025-03-30 19:55:45 319

原创 15届蓝桥JavaB组 前6道题解

测试剂的期望=(n/k) * (1-p)^k + (n/k) * (1-(1-p)^k) * (k+1)一共有n/k个小组 我们知道:有毒的小组数量=总小组数量 * 一个小组有毒的概率。一个小组没有病毒的概率是(1-p)^ k,有病毒的概率是1-(1-p)^k。这些小组中没有病毒的个数是(n/k) * (1-(1-p)^k) 个。这些小组中有病毒的小组有(n/k) * (1-p)^k 个。一共有n只,每个小组k只,所以一共有n/k 个小组。有病毒的概率是p 没有病毒的概率就是1-p。

2025-03-29 14:00:48 467

原创 dfs/回溯 题目

【代码】dfs/回溯 题目。

2025-03-27 12:13:34 393 1

原创 蓝桥月赛 第27场

思路:涉及了二分,红队是按照输入顺序来上场的,蓝队是挑选上场的,要使得蓝队赢的多,蓝队出场顺序一定是从小到大出场,每次红队出场一人,蓝队出场一人后,蓝队出场者要与红队上场的所有人比较,找出拳头较小的个数然后累加。思路:涉及到排序,要求小蓝和小乔的报酬总和最大,对于任一班谁的报酬较大就让谁选择, 如果先让小蓝进行选择前n/2个班,我就要使得前n/2个班中小蓝的报酬大于小桥的,差值越大越靠前,思路就有了,先对数组二维数组按照 小蓝-小乔 的报酬从大到小排序,然后小蓝选择前n/2个班,小乔选择后面的班。

2025-03-25 16:53:49 751

原创 牛客周赛 86 DE

思路:凸多边形满足条件:所有边的长度之和-最长边>最长边,类似于三角形中的最短边+次短边>最长边。接下来就是看怎么求最小凸多边形周长呢,首先将数组从小到大排序,接着枚举最长边,将其他若干边中找出大于最长边的子集,最小化子集,更新答案即可。这思路看起来比较抽象,可以直接看代码注解。思路:我们想,最多有3种 ,将x和y重复进行两次,出现相同的数字,然后位异或就是0,所以答案就是1、2、3,先讨论为1的情况,只有两种&和^,然后讨论为2的情况,情况比较少直接枚举就可以了,剩下就是为3的情况。

2025-03-25 10:09:06 161

原创 二分图判定算法

二分图判定说白了就是遍历一遍图,一边遍历一边染色,看看能不能用两种颜色给所有节点染色,且相邻节点的颜色都不相同。

2025-03-21 15:51:31 278

原创 二叉树题目(遍历+分解思路)

注意:onPath用StringBuffer类型,方便将增删,增的方法就是。注意:String中的join方法。方法变成Integer类型相加。,方便转换成String形式用到。,然后用Integer的。

2025-03-20 18:34:53 270

原创 最近公共祖先

思路:题目要求你找到以root为根的树上p和q的最近公共祖先,将大问题分解成小问题,如果该根节点是p或者q,就说明根节点就是最近公共祖先,如果不是,就去左右子树上寻找,如果root的左子树和右子树都找到了,就说明q和p在root的左右子树上,那么根节点就是root,否则就返回不是空的左子树或者右子树的值。思路:如果用上面的代码可以通过,但是复杂度较高,这里是搜索树,满足。,然后于根节点比较,

2025-03-20 11:24:24 526

原创 牛客周赛85 DEF Java

4.

2025-03-17 20:49:27 402

原创 栈的题目leetcode

对于栈这种数据结构的考察,主要考察先进后出特点的运用,比如表达式运算、括号合法性检测等问题,下面列出几个使用栈的经典场景。② 当前的事右括号,看看栈顶是不是对应的左括号,如果是就pop,不是就进栈。思路:有这么几种情况:① 当前的括号是左括号,直接进栈。思路:链表只能从头到尾,需要借助栈来得到从尾到头。最后如果栈为空,就返回true。

2025-03-13 12:23:30 240

原创 差分数组题目

【代码】差分数组题目。

2025-03-12 16:28:51 229

原创 【前缀和题目】

前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和。

2025-03-12 12:57:16 505

原创 滑动窗口题目

滑动窗口算法技巧主要用来解决子数组问题,比如让你寻找符合某个条件的最长/最短子数组。

2025-03-11 11:20:25 282

原创 二维数组的花式遍历技巧

【代码】二维数组的花式遍历技巧。

2025-03-08 10:51:53 264

原创 双指针秒杀数组题

【代码】双指针秒杀数组题。

2025-03-07 20:21:20 247

原创 链表双指针经典习题

【代码】链表双指针经典习题。

2025-03-07 19:43:50 512

原创 二分题目leetcode

题目链接在D天内送达包裹的能力题目链接题目链接

2025-03-04 19:59:31 385

原创 图论题目。

Kruskal: 将所有边按照权重从小到大排序,从权重最小的边开始遍历,如果这条边和 mst 中的其它边不会形成环,则这条边是最小生成树的一部分,将它加入 mst 集合;Prim: Prim 算法的逻辑就是这样,每次切分都能找到最小生成树的一条边,然后又可以进行新一轮切分,直到找到最小生成树的所有边为止。后序遍历的这一特点很重要,之所以拓扑排序的基础是后序遍历,原因:我的res写在了前序遍历的位置,应该写在后序遍历的位置。(DAG)的顶点进行线性排序的一种算法,其实特别简单,把图结构。

2025-03-02 20:04:56 438

原创 分治算法+题目

把递归算法抽象成递归树,如果递归树节点的时间复杂度和树的深度相关,那么使用分治思想对问题进行二分,就可以使递归树尽可能平衡,进而优化总的时间复杂度。

2025-03-02 19:50:10 252

原创 贪心算法+题目

拿到题目就暴力穷举,我用的是dfs,加上备忘录之后还是超出时间限制。就考虑一下贪心算法。你想 我在[0,n-2]位置遍历求出可以跳跃的最远距离,用farthest更新最大值,如果>=终点就返回true。DFS递归:时间复杂度最坏是O(N*N)贪心:时间复杂度O(N)

2025-03-02 19:27:44 1028

原创 【二分搜索题目】

的精髓在于。

2025-02-18 20:16:05 445

原创 经典题型:求数组中逆序对的数量

总结:在合并的过程中,如果前面区间指向的元素小,不用管,如果后面区间的小,就要加上前面区间的个数。步骤三:前面数组指向的元素2较小,放回原始数组,2与后面数组不构成逆序对,不管他。步骤二:1与前面的区间,构成逆序对,个数就是前面区间的个数。步骤一:两个指针指向两个有序区间,进行合并操作。

2025-02-09 20:25:03 233

原创 并查集题目

并查集(Union-Find)算法是一个专门针对「动态连通性」的算法。双方向的连通。

2025-02-09 16:14:29 590

原创 【单调队列题目】

与优先级队列区别:优先级队列底层是小堆,按照大小顺序出队列,不符合队列性质“先进先出”,单调队列一般和标准队列一起配合解决滑动窗口问题。

2025-02-09 12:30:08 380

原创 单调栈题目

单调栈用途不太广泛,只处理一类典型的问题,比如「下一个更大元素」,「上一个更小元素」等。

2025-02-08 18:38:02 370

原创 【双指针题目】

【代码】【双指针题目】

2025-02-03 16:37:28 217

原创 【二分题目】

【代码】【二分题目】

2025-02-03 11:22:38 266

原创 【位运算题目】

对[l,r]区间操作,用到掩码,创建掩码是关键,掩码就是[l,r]上是1其余是0的二进制,得到掩码第一步,生成[0,r]为1其余为0的二进制,(1<<(r-l+1)-1),第二步,生成[0,l-1]的二进制b,第三步,a-b得到掩码。

2025-02-02 10:57:12 233

原创 搜索二叉树(增删查)

知道BST的中序遍历是有序的,思路打开,可以中序遍历二叉树然后判断结果是不是有序的,有序就是搜索二叉树,否则不是。有两个方法:①可以用一个变量max来记录最大值 ②遍历过程中直接比较前后节点。

2024-11-25 21:42:02 180

原创 二叉搜索树(中序遍历特性)

思路:首先看每个节点应该做啥,发现每个节点做的事情不一致,有的节点是右子树之和加上自己,有的还要加上父节点。所以不能简单的递归做同样的事情!此路走不通就换一条,思路:中序遍历后返回第k大的值。

2024-11-24 15:27:27 293

原创 遍历二叉树非递归(java)

他们的前两个相同,当p为空时就有差异了!!!

2024-11-16 16:38:00 446

原创 【环检测与拓扑排序(java)】

为什么环检测和拓扑排序放在一起,因为在拓扑排序之前要检查一下图中是否有环,拓扑排序的前提是不能有环。环检测与拓扑排序都有两种方法:BFS和DFS。针对的是:有向图。

2024-11-04 21:27:04 455

原创 【滑动窗口->最小覆盖子串】

简单来说,扩大窗口对应着出现解,缩小窗口对应着优化解。

2024-11-03 21:32:57 227

原创 【BFS】

问题的本质就是让你在一幅「图」中找到从起点 start 到终点 target 的最近距离。bfs是从树的层序遍历中衍生出来的。BFS 相对 DFS 的最主要的区别是:dfs得将树遍历完才直到起点到终点的最小距离,而bfs不一定遍历完所有节点。所以bfs比dfs快一点,但是bfs的空间复杂度会更大。dfs是递归,得压栈,空间复杂度就是树的高度,而bfs用的队列,队列要装得下最后一层的节点,如果看成满二叉树,最后一层的节点数占总节点数的1/2,空间就更大一些。

2024-11-03 21:16:47 408

原创 【回溯方法(解决子集、组合、排列问题)】

回溯算法就是纯暴力算法,有些问题纯暴力写不出来就得用回溯方法,比如:要你在100个数中,挑50个数,如果用暴力写得用50层for循环,显然是不现实的,所以引进了回溯方法,暴力解法中的嵌套的for相当于回溯方法中的递归,可以理解为进入下一层决策树,在进入下一层决策树之前要做出选择,之后要撤销选择。抽象地说,解决一个回溯问题,实际上就是遍历一棵决策树的过程,树的每个叶子节点存放着一个合法答案。你把整棵树遍历一遍,把叶子节点上的答案都收集起来,就能得到所有的合法答案。

2024-11-03 14:44:33 1160

原创 【最长回文子串(双指针解决)java】

1.遍历原字符串,分别以下标为i为中心,i与i+1为中心来计算最长回文子串。2.怎么找最长回文子串(fun函数中实现):用双指针来向两边扩散。,有两种情况:a.中间是偶数、b.中间是奇数。

2024-10-24 20:39:42 436

原创 dfs题目:平衡二叉树(java)

}* }*///功能:求以root为根的深度return 0;//以root为根的深度=1+以root下一层的深度(较大的子树)//先求一下root左子树的深度//比较一下,选大的if(l>r){return 1+l;//函数功能:判断以root为根,判断他的左右子树是否平衡//先求root的左子树的深度//再求root的右子树的深度//比较一下是否左右子树的深度差是否>1。

2024-10-21 20:58:05 424

原创 买股票的最佳时机含冷冻期--(动态规划(简单多状态dp问题))

不可能最后一天处于买入状态了。

2024-10-04 13:52:54 476

原创 【粉刷房子(动态规划(简单多状态dp问题))】

回归转移方程:在dp[i][0]等于在i-1位置的最小花费+costs[i][0],i-1位置不能是红色的,最小花费是min(dp[i-1][1],dp[i-1][2]),dp[i][1]和dp[i][2]和dp[i][0]类似。根据经验,看最近的位置,dp[i]是i-1位置的最小话费+i位置的花费,问题来了,i位置的花费有三种,所以一维dp表不可以,得用二维dp表,有题目可知,顺序是从0号房间到i号房间,顺序是从左往右,所以还是根据经验+题目要求。根据转移方程,现有i-1位置再有i位置,所以是从左往右。

2024-10-03 20:35:02 507

原创 【删除并获得点数(动态规划--简单多状态dp问题)】

没听懂没关系,举个例子就容易理解了,假设原数组{1,2,2,4,4,4,7,7,8},建立arr[9]的临时数组,初始化arr数组为0,遍历完原数组后arr中的值为{0,1,4,0,12,0,0,14,8},其中arr[2]表示原数组中的2相加后为4。数组是无序的,删除元素不方便,所以先变得有序,怎么变得有序?创建新的数组arr,数组的大小是原数组中的最大数+1,原数组的元素对应arr下标,然后遍历原数组,在对应的位置加加,目的是统计下标值在原数组出现的总值。具体步骤在下面链接里,在这里不再赘述。

2024-10-02 18:56:11 611

空空如也

空空如也

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

TA关注的人

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