avatar
文章
39
标签
20
分类
9

主页
博文
  • 分类
  • 标签
  • 归档
力扣
Weekly
生活
  • 相册
  • 音乐
  • 影视
友链
关于我
XiaoYi Blog
主页
博文
  • 分类
  • 标签
  • 归档
力扣
Weekly
生活
  • 相册
  • 音乐
  • 影视
友链
关于我

XiaoYi Blog

Weekly#3: 国庆小长假
发表于2025-10-04
夜晚的景色,荫马塘、超算、研究楼路口 工作这周主要做了两件事。 第一是对密码软件开发的流程进行了熟悉,在本地跑通并验证了正确性,下一步就是开发10种密码函数了。虽然这需要用超算的平台,但是我还没有账号。 第二是MybatisPlus的学习。 1,掌握了 MybatisPlus 的基本操作,包括条件构造器,自定义 SQL,Mapper 层和 Service 层方法的使用,能够使用 MP 进行 CRUD 以及复杂语句的编写。其中最重要的是要能使用 Lambda 功能简化复杂的查询以及更新功能。 2,MP 扩展功能:静态工具 Db ,用来解决 Service 层循环调用出现的循环依赖问题。MP 的枚举处理器,用来解决枚举类型和数据库类型不能自动转换的问题。MP 的 JSON 类型处理器,用来解决 Java 中特殊字段类型与数据库类型转换的问题。以及代码生成和逻辑删除。 3,MP 插件功能。分页插件的配置以及常用的 API 。并且开发了通用的分页实体,以及对工具类进行了封装,方便以后的各个服务的调用。其中分页插件常用 API 其实就两个,如下: 1234567int pageNo = 1 ...
Weekly#2:研究生生活初体验
发表于2025-09-25|Weekly
落日、海面、大桥、飞机,令人向往的场景 工作第一项,熟悉了密码分析软件的整体流程和框架,对每个模块的功能有了大概了解。 第二项,学习了 Mybatis-Plus 的使用,Stream 流的使用,Java 中的方法引用。由于开学空闲时间较少,力扣除了每日一题,基本不刷题了。选了五门选修课,听下来没什么帮助,纯粹浪费时间。 研究生初体验体验了一周,很复杂的感受(其实删除了很多的感受)。每天大体的生活就是教室、工位、宿舍三点来回切换。体会最深刻的有两方面。 一是体会到研究生和本科生在时间分配上的区别。本科的时间很自由,除了上课,剩下的时间完全由自己支配。研究生呢,由于每天要坐班,持续的做组里的项目,研二估计还要读论文,自己可支配的时间就大幅减少了。这就造成一个很严重的问题,自己只有很少的时间去做自己的事情。目前的解决办法是:提高自己的工作效率,争取更多的时间来做自己的事情。 二是感觉研究生比本科生更累。这几天每天回到宿舍,都处于很累的状态。感觉每天做的事情也不是很多,为什么还是很累呢?是还没有适应研究生的生活吗?还是其他原因。不清楚。再体验一周再进行分析。 阅读 第一次看到这句话是在 ...
Weekly#1:开学了
发表于2025-09-16|Weekly
人生第一辆车由于本科四年一直没有买电动车,饱受砖头一样重的电脑和适配器的折磨,因此一开学我就有了买电动车的打算。一开始是打算收二手的,但是前前后后看了好几个都不太满意,最终决定买一辆新车。 买二手电动车的经历: 第一个车子,糟糕的车子。外观很破旧,续航也一般,只有12公里左右。我问他什么时候买的,他说23年购入的。向他索要购买凭据和付款记录,他说时间太久找不到了。我问他多少钱出?他说900,我砍价说700,他没有怎么还价,直接答应了。这里我感受到了不对劲。一般来说,学生出售二手电动车还价的幅度一般在100左右,但是他直接给我少要了200。事出反常必有妖。我又仔细观察了他的电动车,车子的外观看起来很破旧,不像是23年新买的,反倒像是买了好几年了。加上他一直找不到当时的购买记录,我怀疑他是二手买进的,现在想二手出售,想坑人。于是,我放弃了这个车子。 第二个车子,坦白的讲,这个车子外观和质量都很不错,我也很喜欢,但最后因为价格方面没有谈拢就不了了之。车子也是23年购入的,车子外观看起来很新,车主出示了购买记录,也出示了电瓶的型号,是42V12Ah。车主说中间还换过一次电机,花了好几百。其中电 ...
Java基础语法
发表于2025-09-16|Java
String类常用方法速查:12345678910111. char charAt(int index)2. boolean contains(CharSequence chars)3. int length()4. String[] split(String regex) 根据匹配给定的正则表达式拆分此字符串5. char[] toCharArray()6. String toLowerCase()7. String toUpperCase()8. boolean isEmpty()9. String substring(int beginIndex, [int endIndex])10. int indexOf(int ch, [int fromIndex]) // ch字符,Unicode 编码。11. String[] split(String regex, [int limit]) // 匹配给定的正则表达式拆分字符串,返回字符串数组。注意,.、$、|、* 等转义字符,必须得加\\。 Character类常用方法速查:调用格式:形如Characater.toString(& ...
3676碗子数组的数目
发表于2025-09-08|LeetCode
Problem: 3676. 碗子数组的数目 思路 这道题是739.每日温度的变形。在每日温度中,我们维护了一个单调递减栈。当前元素大于栈顶元素时,不断弹出栈顶元素,直到当前元素不再大于栈顶元素。弹出的过程中,记录答案。 回归这道题目,要求解满足 min(nums[l],nums[r])>max(nums[l+1],…,nums[r−1])min(nums[l], nums[r]) > max(nums[l + 1], …, nums[r - 1])min(nums[l],nums[r])>max(nums[l+1],…,nums[r−1]) 条件的子数组数量。lll 和 r r r 是左右两个边界。因为我们不知道左右边界哪个大,哪个小,因此需要分情况讨论,这样就能避免比较左右边界大小的问题: 当nums[l]<nums[r]nums[l]<nums[r]nums[l]<nums[r]时,min(nums[l],nums[r])=nums[l]min(nums[l], nums[r])=nums[l]min(nums[l], ...
3495使数组元素变为零的最小操作次数
发表于2025-09-08|LeetCode
https://leetcode.cn/problems/minimum-operations-to-make-array-elements-zero/solutions/3774178/da-biao-fa-by-dzcgi6z0qk-pcda 打表法:table里面存入1~1e9中4的倍数。求[r,l]之间需要操作的次数等价于求[1,r]减去[1,l-1]操作的次数。 12345678910111213141516171819202122232425262728293031323334class Solution { public long minOperations(int[][] queries) { long[] table = {1, 4, 16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864, 268435456, 1073741824}; int n = queries.length; ...
853车队
发表于2025-09-08|LeetCode
Problem: 853. 车队 思路: 采用单调递减栈,单调栈中存放所有可能的车队到达终点需要的时间。(注意,只保存位置最大的那个车辆,也就是车队中速度最慢的车辆)。我们需要对数组按照postion升序排列,然后从左到右遍历。 如果当前车辆到达时间大于等于栈顶车辆的时间,说明栈顶车辆能追上当前车辆,将栈顶车辆弹出,当前车辆入栈,将它两合并成一个车队。如果当前车辆到达时间小于栈顶车辆达到时间,说明栈顶车辆追不上当前车辆,那么将当前车辆入栈。循环结束后,单调栈的大小就是车队的数量。 复杂度 时间复杂度: O(nlog(n)),瓶颈在排序的复杂度上。当然,也可以采用空间换时间的方法,利用target大小的数组来保存数据。 空间复杂度: O(n) Code 1234567891011121314151617181920class Solution { public int carFleet(int target, int[] position, int[] speed) { int n = position.length; int ...
37解数独
发表于2025-09-08|LeetCode
Problem: 37. 解数独 思路: 利用row[i][val]表示第i行有没有val出现。 利用col[j][val]表示第j列有没有val出现。 利用block[i / 3][j / 3][val]表示第(i/3,j/3)个九宫格有没有val出现。 利用empCells存储尚未被填充的点。 首先取出empCells中的第一个点,digital从0~9填充,如果digital不在行,列,其所在九宫格中存在,则遍历下一个未被填充的点。直到填充结束。 注意点: 1、在digital遍历的时候,需要加上 !valid 条件。也就是(int digital = 0; digital < 9 && !valid; digital ++)。为什么? 因为如果不加这个条件,假设找到数独的解时,整个dfs还未完成。就要进行回溯,回溯的时候会将先前已经遍历过的digital设置为false。这样的话,当回溯到某个点时,该点的digital从k~9遍历(k是未被遍历过的第一个数字),而恰好在之前回溯过程中,k被设置为fals ...
1971寻找图中是否存在路径
发表于2025-09-08|LeetCode
Problem: 1971. 寻找图中是否存在路径 1234567891011121314class Solution { int[] pa; public boolean validPath(int n, int[][] edges, int source, int destination) { pa = new int[n]; Arrays.setAll(pa, i -> i); for (int[] e : edges) { pa[find(e[0])] = find(e[1]); } return find(source) == find(destination); } private int find(int a) { return (pa[a] == a) ? a : (pa[a] = find(pa[a])); }} 37解数独 Problem: 37. ...
3025人员的占位方案数
发表于2025-09-08|LeetCode
Problem: 3025. 人员站位的方案数 I 思路: 想了好久,发现最后挺简单的。如图。当以1作为左端点时,如果右端点大于左端点的值,说明不满足A 在 B 的左上角条件,直接跳过此次循环。如果右端点的值小于等于左端点,判断右端点是否大于记录的最大值,如果大于,例如点3,说明左、右端点构成的矩形中没有其他点,更新最大值,ans++。 难点:当满足A 在 B 的左上角时才更新最大值。这样就能确保最大值永远在左端点高度之下(或者平齐),换句话说,该最大值是以左端点为左上角的矩形范围内的最大值,后面每次右端点进入的时候,只需要比较右端点和最大值即可。 复杂度 时间复杂度: O(n^2) 空间复杂度: O(1) Code 12345678910111213141516171819202122class Solution { public int numberOfPairs(int[][] points) { int n = points.length; Arrays.sort(points, (a, b) -> a[0 ...
12…4
avatar
XiaoYi
文章
39
标签
20
分类
9
Follow Me
公告
This is my Blog
最新文章
Weekly#3: 国庆小长假2025-10-04
Weekly#2:研究生生活初体验2025-09-25
Weekly#1:开学了2025-09-16
Java基础语法2025-09-16
3676碗子数组的数目2025-09-08
分类
  • History2
  • Java4
  • LeetCode10
  • Weekly2
  • 六级?六级!!!1
  • 前端2
  • 基础7
  • 数据结构与算法2
标签
Weekly 缓存穿透 缓存击穿 古诗词 Hello World 缓存雪崩 Git Vue Make MySQL Redis 活着的意义 Java8特性 Office 分布式锁 algorithm 计网 Redisson分布式锁 Java 乐观锁、悲观锁
归档
  • 十月 20251
  • 九月 202515
  • 八月 20252
  • 七月 20253
  • 六月 20253
  • 九月 20241
  • 八月 20241
  • 七月 20241
网站资讯
文章数目 :
39
本站总字数 :
60.3k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By XiaoYi
框架 Hexo|主题 Butterfly
湘ICP备2023016497号-1