- 博客(183)
- 收藏
- 关注

原创 蓝桥杯—稍小分数—java
题目描述x星球数学城的入口验证方式是:屏幕上显示一个真分数,需要你快速地找到一个比它小的既约分数,要求这个分数越大越好。同时限定你的这个分数的分母不能超过100。思路:;。l?;。’/;/lp’/.l...
2022-01-02 22:10:05
3628
1

原创 蓝桥杯—出栈次序 (JAVA)
题目描述:X星球特别讲究秩序,所有道路都是单行线。一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行。路边有个死胡同,只能容一辆车通过,是临时的检查站,如上图所示。X星球太死板,要求每辆路过的车必须进入检查站,也可能不检查就放行,也可能仔细检查。如果车辆进入检查站和离开的次序可以任意交错。那么,该车队再次上路后,可能的次序有多少种?为了方便起见,假设检查站可容纳任意数量的汽车。思路:就当前车队的排列顺序受两个因素影响,一个是车速一个是出栈的顺序,首先是左边进栈的情况其.
2022-01-02 10:16:02
3693

原创 蓝桥杯-阶乘约数-java
题目描述定义阶乘 n! = 1 × 2 × 3 × · · · × n。请问 100! (100 的阶乘)有多少个约数。数论的一个知识点:思路:举个例子180=2 * 2 * 3 * 3 * 5=22*32 * 5则180的约数个数有(1+2) * (1+2) * (1+1)=18个。直接模拟判断约数的个数即可public class Main { public static void main(String[] args) { int[] arr=new in
2022-01-02 10:03:14
7379
4
原创 LC1584. 连接所有点的最小费用(Kruskal算法+end数组简化)
Kruskal求最小生成树 (end数组简化并查集操作)● 思路:● 非常经典的最小生成树问题,这里使用Kruskal算法解决● 先将边的关系存储(起点,终点,边长) 注意这里一共有n个点构造初始所有的边数目应该是n(n-1)/2 条● 按照边的长度进行排序,每次记录每个边的终点(end数组存储),将不同终点的边进行合并我的力扣题解:https://leetcode-cn.com/problems/min-cost-to-connect-all-points/solution/by-che.
2022-04-08 20:32:52
345
原创 路径-java
小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径。小蓝的图由 2021 个结点组成,依次编号 1 至 2021。对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点 之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条 长度为 a 和 b 的最小公倍数的无向边相连。例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无 向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度
2022-04-03 19:52:50
112
原创 搜索二维矩阵 II(贪心分治)
思路:暴搜没什么好说的利用行和列元素单调递增的特性,我们可以从边界开始搜索,以右上角为例 ,当前元素比目标值更小,则列不变往下搜索,(往左是更小不可能,也无法往上和右找),同理,比目标值更大则行不变往左搜索class Solution { public boolean searchMatrix(int[][] matrix, int target) { int p = 0; int q = matrix[0].length - 1; whi.
2022-03-31 17:36:22
317
原创 LeetCode-前 K 个高频元素(优先队列)
前言:啥是优先队列?优先队列的实现原理题目:思路:常规的解法就是将值存放并记录在hash表中,并且最好按照value进行排序但是TreeMap是无法进行队value进行排序的,此时就需要借助优先队列,来实现对map中的value进行排序class Solution { public int[] topKFrequent(int[] nums, int k) { HashMap<Integer,Integer> map=new HashMap<
2022-03-31 13:16:54
888
原创 leetcode-反转字符串
思路:● 明确递归函数的意义:当前第i,j个字符是否与字符串中第k个字符相同● 回溯的终止条件有:1. 越界,2.找到最后一个单词,3.当前搜索的单词不等于字符串中的某个的单词● 注意向各个方向深搜只是更改下一层的位置信息,将最后的结果都或起来,只要在一个方向满足就代表,在当前位置能找到下一个位置的坐标● 注意防止重复遍历,要将当前位置的字符进行标记,在搜索后也要进行回溯class Solution { public boolean exist(char[][] board, .
2022-03-31 10:42:03
363
原创 leetcode. 不同的二叉搜索树(计数dp)
思路:● 总共分为n种类别(n个作为二叉搜索树的根结点,只需分别求出n个结点对应的种数求和即可)● 题目求的是种数,类似于计数型的动态规划,利用二叉搜索树的性质来确定dp方程,以及状态转移的条件例如:由转移方程确定初始值应为 dp[0]=1,dp[1]=1 且递推要从dp[2]开始递推class Solution { public int numTrees(int n) { int[] dp=new int[n+1]; dp[0]=1; ..
2022-03-19 14:24:47
567
原创 leetcode-解码方法(计数dp)
思路:● 动态规划 的第一步即为 确定状态,记dp[i] 为到第i+1位时的解码方法总数● 最后一步 : 最后通过递推即可得到dp[s.length()] 即为结果● 边界处理: 初始化dp[0]=1,dp[1] 可由dp[0]推导注意:此题求解的是解码的方法数,当我们到i位时,如果是直接解码当前i位的数作为1次解码的方法时,实际上和之前的解码方式等价,无需再对解码总数加一注意处理前面为前导零的情况class Solution { public int numDecoding..
2022-03-19 10:34:00
895
原创 leetcode-二进制求和
Code:class Solution { public String addBinary(String a, String b) { StringBuffer ans=new StringBuffer(); int i=a.length()-1,j=b.length()-1,carry=0,temp=0; while(i>=0||j>=0){ int t1=i<0?0:a.charAt(i)-48,t2.
2022-03-18 13:12:20
290
原创 leetcode-字符串相乘
思路: 先将字符串模拟相乘,再将字符串相加注意:● 取余和做商都要将进位数带上,结束运算后进位数不为0还需添加上● 做加法时,对于位数不同的情况,无需管越界的下标,只需将被加数置为0即可● 对于每个由相乘得到的数,需进行补0处理class Solution { public String multiply(String num1, String num2) { if(num1.equals("0")||num2.equals("0")) return "0"; .
2022-03-18 12:56:57
236
原创 Leetcode:统计按位或能得到最大值的子集数目
性质:或运算相当于是 十进制的加法,先预处理将所有数进行或运算,即为最大值每次维持一个异或和,在深度从0开始或运算时,可以选择或运算当前数,或者不或运算,就直接跳过进入下一层,每进入新的一层且,选择的下标到最后时就与最大数比较,相等加一class Solution { int max=0,cnt=0; public int countMaxOrSubsets(int[] nums) { max=nums[0]; for(int i=1;i<..
2022-03-15 20:09:22
452
原创 leetcode-三数之和
思路:● 我们可以先遍历确定其中一个数,剩下的两个数就转化成两数之和问题 -a=b+c(target为-c)● 分析可以得到:若三个数均为正数,必不可能和为0● 若当前数和前一个数相同,那么这两个数的两数之和也必然相同(因为排序后的数组是单调递增的)● 同理在双指针寻找两数之和时也是利用上面这点去重的(避免在[0,0,0,0]里找两数之和为0时出现重复)(当然,也可以Set进行去重,因为List集合的判重方法equals ,是通过比较list中的值来判断两个list是否相同)class Sol.
2022-03-11 10:26:47
304
原创 leetcode-盛最多水的容器
思路一: 暴利双for超时思路二:双指针+贪心面积=较短垂直线的长度*线之间的距离记录最短长度和距离,长度和值都尽可能大先由贪心思想,来确定解题的初始值 双指针分别确定头与尾 ,这样就保证了一个长度最大的情况,当左右分别减少时,则贪心的找左右两垂线值的较小值中的较大值作为高度(贪心的思想,是需要逐步对每一种情况进行推理的)例如:● 贪心决策左移或右移的区别1.无论移动哪根,宽度都会变小, 若移动长的那根,若移动后的垂线高度比之前短的更短或是更长都是亏损的(因为高度由短的决定)2. 所.
2022-03-10 20:12:35
127
原创 leetcode-蜡烛之间的盘子(经典空换时)
https://leetcode-cn.com/problems/plates-between-candles/思路:(预处理+前缀和)本题的思路是找到区间中的被两个蜡烛围起的盘子最先的思路是: 先获取前缀和,最后计算的过程,遍历去寻找下标最近的蜡烛-------->> 超时前缀和的思想就是以空间换时间,下标最近的蜡烛可以通过记忆保存到数组的方式,获取最近的蜡烛前缀和的获取: 只需要迭代累加的方式,记录从起点到当前结点的 ‘*’ 的数量注意事项:● 前几个 p q 为初始值时
2022-03-09 09:12:51
244
原创 蓝桥训练营-节点选择(java)
问题描述有一棵 n个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那么在树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少?输入格式第一行包含一个整数 n 。接下来的一行包含 n 个正整数,第 i 个正整数代表点 i 的权值。接下来一共 n-1 行,每行描述树上的一条边。输出格式输出一个整数,代表选出的点的权值和的最大值。样例输入51 2 3 4 51 21 32 42 5样例输出12思路:这是一道树形dp问题,树形dp的核心就是对于每一个结.
2022-01-21 11:06:24
597
原创 蓝桥训练营-杨辉三角形(java)
思路:这道题是一道找规律的题目:首先我们需要了解杨辉三角和组合数的关系即:每一层的数都对应与一个组合数C,下限为行号,上限为列号通过规律可以得出:每一行每一列上的数字都是单调递增的,而且都是对称的,当我们要寻找第一个出现的数,只需考虑左半部分即可,这样我们就可以再第j列枚举查找第一个大于等于n的数,若其与n相等,则输出其序号;否则,继续在 j − 1列上查找这个数。import java.util.Scanner;public class Main { public static vo.
2022-01-21 11:05:35
435
原创 蓝桥杯训练营—2n皇后问题(java)(递归回溯)
问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。输入格式 输入的第一行为一个整数n,表示棋盘的大小。 接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。 输出格式 输出一个整数,表示总共有多少种放法。样例输入41 .
2022-01-11 08:18:19
395
原创 蓝桥训练营-大臣的旅费(java)(树中权值和最大的通路)
题目:问题描述很久以前,T王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。J是T国重要大臣,他巡查于各大城市之间,体察民情。所以,从一个城市马不停蹄地到另一个城市成了J最常做的事情。他有一个钱袋,用于存放往来城市间的路费。聪明的J发现,如果不在某个城市停下来修整,在连续行
2022-01-11 08:17:25
139
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人