
刷题
做过的经典题
三木一立
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode麻烦又易忘记题目
有序数组的平方 做到 O(n)找到 K 个最接近的元素数组中的 K 个最强值 用双指针解决两数之和 II - 输入有序数组平方数之和统计和小于目标的下标对数目采购方案 同 2824 题三数之和https://leetcode.cn/problems/3sum/description/最接近的三数之和四数之和https://leetcode.cn/problems/4sum/description/有效三角形的个数数的平方等于两数乘积的方法数 用双指针实现。原创 2025-03-05 15:46:23 · 186 阅读 · 0 评论 -
LeetCode 252. 会议室(排序)
会议室原创 2022-06-08 14:49:41 · 273 阅读 · 0 评论 -
LeetCode 252. 会议室(排序)
会议室原创 2022-06-02 20:12:19 · 315 阅读 · 0 评论 -
蓝桥2019国赛题 - 递增序列(签到题)
试题 A: 递增序列本题总分:5 分【问题描述】对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这两个字母从左向右看、或者从上向下看是递增的。例如,如下矩阵中LANNQIAO有LN、LN、AN、AN、IO、AO、LQ、AI、NO、NO、AQ、IN、AN 等 13 个递增序列。注意当两个字母是从左下到右上排列时,从左向右看和从上向下看 是不同的顺序。 对于下面的 30 行 50列的矩阵,请问总共有多少个递增序列?.原创 2022-05-29 10:04:50 · 576 阅读 · 0 评论 -
蓝桥 - 本质上升序列
直接上代码:求得结果 :3616159import java.util.Arrays;import java.util.Scanner;public class 本质上升递增子序列 { public static void main(String[] args) { String s = "tocyjkdzcieoiodfpbgcncsrjbhmugdnojjd" + "dhllnofawllbhfiadgdcdjstemphmnjihecoapdjjrprrqnh" +原创 2022-05-26 14:15:25 · 245 阅读 · 0 评论 -
leetcode - 84. 柱状图中最大的矩形
本题借用单调栈求解。单调栈,要根据题意明确是从栈头到栈尾递增呢?还是递减呢?本题是递减。因为要求最大矩形面积,但是相邻矩形的高,取决于两侧较低的那个。class Solution { public int largestRectangleArea(int[] heights) { Stack<Integer> stack = new Stack<Integer>(); int[] newheights = new int[heights原创 2022-05-24 17:32:57 · 121 阅读 · 0 评论 -
leetcode - 42. 接雨水
1,这道题是一道hard题,但是思路并不是很难,而且代码量也比较少。本部分使用了leftmax和rightmax两个数组,记录每个元素左侧的最大值。右侧的最大值。2,这道题使用双指针暴力的话,时间复杂度是O(n*2).本题使用数组记录,虽然使用多次for循环,但是时间复杂度是O(n),数据量增大后性能影响不是很大。3,雨水的体积正是,当前height值与其左侧最大值和右侧最大值中较小的一个的差值。v = height[i] - min(leftmax, rightmax). 总体积就把所有的都加原创 2022-05-23 21:43:08 · 143 阅读 · 0 评论 -
leetcode - 单调队列,单调栈,优先级队列
239. 滑动窗口最大值单调队列有两个性质 ://1, 和普通队列的先进先出//2, 从队头到队尾的大小顺序是单调递减 或者 单调递增的。class Solution { public int[] maxSlidingWindow(int[] nums, int k) { int[] res = new int[nums.length - k + 1]; MyQueue queue = new MyQueue(); int n = 0;原创 2022-05-21 12:07:16 · 249 阅读 · 0 评论 -
leetcode - 栈专题
括号不匹配有三种情况 :1,左括号太多 例如:((())2, 右括号太多 例如:(()))3, 顺序不匹配 例如:(【)】class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); for(int i = 0; i < s.length(); ++i){ char c原创 2022-05-20 12:26:33 · 93 阅读 · 0 评论 -
leetcode-459. 重复的子字符串(判断字符串是否由子串多次重复组成的)
第一种:简单判断形式借鉴的题解区大佬的,掐头去尾后,由子串经过n组成的s,至少有一个s串本身,在s+s串中可以匹配。class Solution { public boolean repeatedSubstringPattern(String s) { return (s+s).substring(1,s.length()*2-1).indexOf(s)!=-1; }}第二种:模拟枚举子串可能的长度class Solution { public boole原创 2022-05-17 18:31:44 · 298 阅读 · 0 评论 -
leetcode-28. 实现 strStr()
这道题有多种解法,先上最简单的解法,然后上稍复杂的解法。个人习惯上来就给复杂的展示,直接就把我劝退了。。第一种:内置函数class Solution { public int strStr(String haystack, String needle) { return haystack.indexOf(needle); }}第二种:双指针法class Solution { public int strStr(String haystack, String needl原创 2022-05-17 17:20:48 · 182 阅读 · 0 评论 -
leetcode-18. 四数之和
不解释了,直接上代码,代码详细注释。class Solution { public List<List<Integer>> fourSum(int[] nums, int target) { //使用双指针法,首先排序 Arrays.sort(nums); List<List<Integer>> res = new LinkedList<>(); for(int i = 0; i &原创 2022-05-17 15:22:35 · 195 阅读 · 0 评论 -
leetcode-滑动窗口专题
一,209. 长度最小的子数组class Solution { public int minSubArrayLen(int target, int[] nums) { int sum = 0; //记录窗口的元素数值总和。 int i = 0; //作为窗口起始下标。 int res = Integer.MAX_VALUE; //j 作为窗口的结束下标。 for(int j = 0; j < nums.leng原创 2022-05-15 10:41:07 · 182 阅读 · 0 评论 -
蓝桥-阶乘的约数
题目描述:定义阶乘 n! = 1 × 2 × 3 × · · · × n。请问 100! (100 的阶乘)有多少个约数。代码:import java.math.BigInteger;public class 阶乘的约数 { public static void main(String[] args) { long[] nums = new long[102]; //素因数记录表 //一个数可以分解为许多个质因数乘积的形式。 因为1不是质数,所以1没有质因数,所以素数表记录为0即可,原创 2022-05-08 12:28:50 · 525 阅读 · 0 评论 -
leetcode-172. 阶乘后的零
代码:class Solution { public int trailingZeroes(int n) { int res = 0; //为什么是n / 5? 因为n / 5表示的就是1 - n中,能整除5的数字的个数,很神奇是吧,非常//、、amazing //为什么一直循环到0? //因为这相当于第一次统计能整除5的个数。 第二次统计能整除25的个数,但实际25可以提供2个因子5,因为计算整除5的因子个数时,统计了一次了,所以原创 2022-05-04 21:14:11 · 132 阅读 · 0 评论 -
2022蓝桥省赛-javab-最少刷题数
试题:代码:没有测试用例用来测,如果uu们发现下面代码有问题,欢迎评论区指正。import java.util.Arrays;import java.util.Scanner;//蓝桥public class 省赛最少刷题数 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] nums = new原创 2022-05-02 16:03:56 · 903 阅读 · 0 评论 -
Leetcode-链表随机节点
原题:链表随即节点分析:本题使用的是水塘算法进行随机选择。如何理解?举个例子:池子里如果有一个数字,则这个数字被取到的概率是100%池子里如果有两个数字,则这个数字被取到的概率是50%如果有三个,则应该接近33%。…现在链表可理解为池子,但是这个池子有多少个数字是不知道的。假设为n个,那么每个数字被取到的概率应该是1 / n 。根据题目的要求,只能通过一次遍历来随机取数,达到1/n的概率。取第i个的概率是1 / i , 第i + 1个保持仍是第i个元素的概率是1 - (1 / i + 1)一原创 2022-05-01 20:58:41 · 699 阅读 · 0 评论 -
全排列--
一,交换形式import java.util.Arrays;public class 全排列 { public static void main(String[] args) { dfs(0); System.out.println(count); } static int count = 0; static int[] nums = {1,2,3}; static void dfs(int k) { if(k >= 3) { ++ count; return;原创 2022-04-08 15:08:38 · 95 阅读 · 0 评论 -
蓝桥杯-考前回顾
一,2015,加法变乘法加法变乘法我们都知道:1+2+3+ … + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015比如:1+2+3+…+1011+12+…+2728+29+…+49 = 2015就是符合要求的答案。请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。注意:需要你提交的是一个整数,不要填写任何多余的内容。解法一:模拟,枚举public class 加法变乘法{ public static voi原创 2022-04-08 11:45:52 · 103 阅读 · 0 评论 -
2021蓝桥直线
高精度处理import java.math.BigDecimal;import java.util.Collections;import java.util.Comparator;import java.util.HashSet;import java.util.LinkedList;import java.util.List;import java.util.Set;//两种情况考虑//1,横坐标相同时单独处理。最后+20即可。//2,横坐标不同时,计算直线。采用截距式。public原创 2022-04-07 17:09:05 · 271 阅读 · 0 评论 -
合根植物-并查集
链接:http://lx.lanqiao.cn/problem.page?gpid=T2850import java.util.Scanner;public class 并查集 { static int[] father = new int[10000]; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int m = scanner.nextInt(); int n原创 2022-04-07 16:40:11 · 103 阅读 · 0 评论 -
蓝桥矩阵乘法
链接:https://blog.csdn.net/qq_62343171/article/details/122431723package 第一;import java.util.Scanner;public class 矩阵乘法 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int m = scanner.原创 2022-04-06 22:03:12 · 102 阅读 · 0 评论 -
数组转二叉树
一,经常见到的是利用下标数值关系。例如:https://blog.csdn.net/luzhensmart/article/details/101687963二,本文使用简单的队列,更易理解,更方便使用import java.util.LinkedList;import java.util.Queue;public class ArrtoBintree { static class Node{ int val; Node left; Node right; public Nod原创 2022-04-06 18:31:16 · 697 阅读 · 0 评论 -
螺旋矩阵-螺旋丸
类似题目:https://leetcode-cn.com/problems/spiral-matrix-ii/模板:public class Main { public static void main(String[] args) { int[][] mat = generatemat(4, 5); System.out.println(mat[1][1]); } static int[][] generatemat(int n, int m){ int l = 0; int原创 2022-04-06 17:51:17 · 412 阅读 · 0 评论 -
蓝桥-二分专题
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T2829import java.util.Scanner;public class 分巧克力 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int k = scanner.nextInt(); int[][] choc原创 2022-03-29 10:34:48 · 130 阅读 · 0 评论 -
蓝桥-直线-2021javab
结果:40257我自己电脑eclipse跑代码时间是:大约2minimport java.util.Collections;import java.util.Comparator;import java.util.HashSet;import java.util.LinkedList;import java.util.List;import java.util.Set;//两种情况考虑//1,横坐标相同时单独处理。最后+20即可。//2,横坐标不同时,计算直线。采用截距式。public原创 2022-03-20 11:24:02 · 351 阅读 · 0 评论 -
dfs排列问题无顺序
本文借鉴第六届蓝桥杯省赛Java-A “牌型种数”import java.util.Iterator;import java.util.LinkedList;public class 牌 { public static void main(String[] args) { dfs(0,0); System.out.println(res); } static int res; public static void dfs(int count,int k) { if(count原创 2022-03-17 16:57:40 · 384 阅读 · 0 评论 -
dfs搜索岛屿边缘
使用dfs搜索岛屿边缘本文灵感来源于蓝桥杯2018JavaB组“全球变暖”题目。需要确定边缘数,小于岛屿陆地总数,不会淹没。注释掉的代码都是错误的,会报数组越界异常,爆栈异常。调了一上午,一上午的网课也没听,始终调不出来,心累,差点就放弃了。public class 岛屿 { static int brink = 0; static int land = 0; static int[][] visit = new int[1000][1000]; public static void原创 2022-03-16 14:19:53 · 129 阅读 · 0 评论 -
classcast错误
Exception in thread “main” java.lang.ClassCastException: class java.util.Date cannot be cast to class javax.xml.crypto.Data (java.util.Date is in module java.base of loader ‘bootstrap’; javax.xml.crypto.Data is in module java.xml.crypto of loader ‘platform原创 2022-03-26 21:58:21 · 707 阅读 · 1 评论 -
蓝桥-积木大赛-贪心
题目链接:https://www.lanqiao.cn/problems/384/learning/import java.util.Scanner;public class 积木大赛 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] nums = new int[n]; for(int i = 0;原创 2022-03-27 17:12:28 · 309 阅读 · 0 评论 -
N皇后回溯
借鉴leetcode:N皇后class Solution { public List<List<String>> solveNQueens(int n) { //String[] grh = new String[n]; char[][] grh = new char[n][n]; List<List<String>> res = new LinkedList<List<String>>原创 2022-03-17 21:26:24 · 389 阅读 · 0 评论 -
蓝桥,九数分三组-全排列
回溯借鉴第六届蓝桥杯省赛Java-A九数分三组。import java.util.Iterator;import java.util.LinkedList;import java.util.List;public class 全排列回溯版dfs {public static void main(String[] args) { //有数的是9层,需要添加一个第0层,指向这九棵树。 traverse(0);}static LinkedList<Integer> track =原创 2022-03-17 08:59:57 · 340 阅读 · 0 评论 -
区间dp,石子合并
借鉴:https://www.acwing.com/problem/content/description/284/import java.util.Scanner;public class 石子合并区间dp { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); //记录原始数据 int[] nums = new i原创 2022-03-24 20:18:11 · 304 阅读 · 0 评论 -
java日期遍历
代码形式:此代码借鉴执梗大佬。执梗public class Main{ static int[] M= {0,31,28,31,30,31,30,31,31,30,31,30,31}; public static void main(String[] args) { int ans=0; int y=1900,m=1,d=1; //先升日期再升值 while(y!=9999||m!=12||d!=31) { if(y%400==0||(y%4==0&&y%100!原创 2022-03-27 09:18:57 · 2784 阅读 · 0 评论 -
leetcode-课程表
判断图是否有环,没有环才能完成作业。如果有环,循环依赖,不可完成。例如:1需要0,0需要1,死结。 //单独做成员变量,不用再放在函数参数传递。 boolean[] visited; boolean[] path; boolean hasCycle = false; public boolean canFinish(int numCourses, int[][] prerequisites) { visited = new boolean[numCo原创 2022-03-19 12:21:49 · 272 阅读 · 0 评论