- 博客(131)
- 收藏
- 关注
原创 力扣每日一题-统计已测试设备-2024.5.10
根据题目内容,第一感是根据题目模拟整个过程,在每一步中修改所有设备的电量百分比。但稍加思索,发现可以利用已测试设备的数量作为需要减少的设备电量,这样,就省去了大量重复的计算操作。
2024-05-10 08:57:13
496
原创 IDEA中向Data Sources导入sql文件
在学习黑马的课程时,时常需要向数据库中导入sql文件生成数据库表,每次都会忘记导入步骤,折腾许久,于是将过程记录下来。
2024-05-07 20:16:55
3064
1
原创 力扣每日一题-去掉最低工资和最高工资后的工资平均值-2024.5.3
先利用sort排序对数组进行从小到大排序,然后计算时数组最小值和最大值不要加进去即可。
2024-05-06 19:36:07
234
原创 力扣每日一题-拆炸弹-2024.5.5
根据代码实现分为k等于0和k不等于0的情况。k等于0很容易处理,而k不等于0时,需要使用滑动窗口的方式来解决。先根据小于0或大于0确定一个窗口,然后移动,获取修改后该位置的值,直到整个数组修改完毕。
2024-05-06 19:31:30
689
原创 力扣每日一题-查询网格图中每一列的宽度-2024.4.27
双层for循环遍历整个矩阵容易想到,只要能想到使用整数转字符串的技巧(“” + 字符串),即可完成题目。
2024-04-27 17:43:07
497
原创 力扣题目:独一无二的出现次数
根据题目要求,可以使用哈希表来统计每个数字出现的次数,然后利用set集合的特性(不能添加重复的元素)来判断是否出现重复次数。
2024-04-26 11:49:20
284
原创 力扣题目:轮转数组
根据从轮转前到轮转后到数组变化,我们可以将数组元素分成两个部分,一个部分数轮转后从右边调到前面,一部分仅仅从左边向右移动。发现这个规律后,将数组分成两部分处理,即可解决问题。
2024-04-26 11:37:24
390
原创 DFS与回溯专题:全排列
也可以利用list.contains()方法来判断是否被使用,但这种方式会耗费较多时间。所以最好用前面的方法,已空间换时间。回溯问题中的全排列,相对比组合、子集等问题,其元素可以颠倒顺序,所以在for循环中每层都是从头开始,无需标记更新起始位置。
2024-04-25 21:03:44
827
原创 DFS与回溯专题:组合
同时,循环停止的条件,最普通就是用题目给的n。然后参考代码随想录,发现是可以剪枝的。一共需要组合5个数,当你已经确定了前3个数,那第4个数最多只能搜索到9,因为至少要留个10给第5个数。这样,每次循环时都可以进行剪枝。该题为经典回溯问题,题目要求k个数来组合,则利用回溯来进行k层for循环。为了防止重复遍历,要用start参数标记每次for循环遍历的起点。
2024-04-20 16:48:32
279
原创 DFS与回溯专题:电话号码的字母组合
将数字到字母的映射用字符串数组表示出来。然后利用回溯算法,解决n个for循环的问题,枚举出每一种符合要求的情况。这样会导致num在循环中重复加很多次,导致递归时出现问题。
2024-04-20 10:43:08
228
原创 DFS与回溯专题:二叉树的最大深度
设置两个变量,max来记录最大值,sum来记录路径的节点数量。利用dfs对二叉树进行搜索,遇到节点,则sum+1;遇到叶子节点,则将max与sum进行比较,取最大值。
2024-04-19 09:34:35
270
原创 DFS与回溯专题:路径总和问题
对二叉树进行dfs搜索,递归计算每条路径的节点值之和,当某个节点的左右子节点都为空时,说明已经搜索完成某一条路径,将它与目标值进行比较,若相等,则为true。路径恢复: 向上回溯前,需要将当前节点从路径 list 中删除,即执行list.remove(list.size() - 1)。为什么要写list_all.add(new ArrayList(list)),而不是list_all.add(list)?注意:解释里面的sum.add(path)就是list_all.add(list)
2024-04-19 09:10:19
877
原创 DFS与回溯专题:力扣岛屿问题合集(持续更新)
每次做到DFS相关的题目都是直接跳过。蓝桥杯过后痛定思痛,好好学习一下DFS和BFS。先从DFS开始吧。
2024-04-15 16:10:27
859
原创 macbook(m1) ubuntu下载,复制粘贴和国内镜像源配置
官网下载打开后根据电脑的架构选择安装包,想要下载其他版本也可在官网中自行搜索。我安装时舍友说他安装的是22.04这个版本,我也就跟着他安装了注意:下载的版本最好有对应版本的国内镜像源(阿里,清华等),否则以后使用时可能很麻烦。点击链接,往下找看到阿里的ubuntu镜像源有22.04版本的,稳啦由于之前安装过win11和centos7,所以虚拟机软件的安装流程已经没什么印象,对ubuntu的安装在此也不赘述了,有需要的可以前往下面链接,我也是根据下面大佬的步骤完成安装的。
2024-04-02 16:18:36
3708
原创 ip地址改变导致nacos无法登录的解决方法
在做黑马的springcloud课程里的黑马商城微服务项目时,发现使用nacos的默认账号密码(nacos,nacos)无法登录,项目里也没报错信息,虽然猜测和ip地址改变有关,但还是折腾了几个小时。最后看到b站的评论区,参考了建议,才解决了问题。
2024-03-28 15:16:27
1192
2
原创 MybatisPlus知识点总结(基于黑马2023MybatisPlus课程)
我们可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分。上图的mp代码有部分是在Service层编写当where条件外的部分没有办法用mp更方便地实现,只能在业务层(Service)拼接,而这样违背了企业开发的规范,就会用到自定义SQL需求:将id在指定范围的用户(例如1、2、4 )的余额扣减指定值步骤1.基于Wrapper构建where条件2.在mapper方法参数中用Param注解声明wrapper变量名称,必须是ew。
2024-03-09 16:26:19
1529
1
原创 Mybatis知识点总结(基于黑马2023javaweb课程)
1.数据库连接池是个容器,负责分配、管理数据库连接(Connection)2.它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个3.释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。
2024-03-09 15:54:45
1067
原创 力扣每日一题-最长交替子数组-2024.01.23
今天的力扣打卡题是道简单题,写完立刻就发出来啦。 这道题可以简单地用双层循环来解决,外层循环遍历整个数组,内层统计满足要求的子数组的长度。判断的时候注意先1再-1再1的循环次序即可。结语 如果这道题的分享对您有所帮助,点个赞或关注,我会每天更新力扣题目的分享。
2024-01-23 09:46:50
565
1
原创 力扣每日一题-最大交换-2024.01.22
好久没有更新力扣的每日一题了,今天刚好先做了这道题,就发一下吧。 这道题用了贪心的思想,在交换的时候,要选择交换后最大的值。 首先,要创建两个数组,一个正常记录值为arr1,一个利用sort排序排好为arr2。然后从高位开始对比,比较出第一个不相同的数字,这个数字的位置就是需要变换的第一个位i, 而第二个要变换位置的地方,其数值为第一个不相同的数字中arr2的值。根据最大化的要求,我们要尽量从低位寻找这个值,所以从arr1低位开始寻找,找到后进行交换即可。结语 如果这道题的分享对您有所帮助
2024-01-22 09:42:17
447
原创 算法通关村第十七关—贪心其实很简单(青铜)
LeetCode455,分发饼干:假设你要给孩子们一些小饼干。但是每个孩子最多只能给一块饼干。每个孩子的饭量不同,对每个孩子ⅰ,都有一个胃口值9[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸s[j]。如果s[j]>=g[i],我们可以将这个饼干j分配给孩子ⅰ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例:其中g是胃口,s是拥有的饼干。首先对g和s进行排序。然后从小到大遍历g中的每一个元素,对于每个元素找到能满足该元素的s中的最小元素。
2024-01-17 17:08:06
441
1
原创 算法通关村第十六关—滑动窗口经典问题(白银)
LeetCode3给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。要找最长子串,必然要知道无重复字符串的首和尾,然后再从中确定最长的那个,因此至少两个指针才可以,这就想到了滑动窗口思想。定义一个K-V形式的map,key表示的是当前正在访问的字符串,value,是其下标索引值。我们每访问一个新元素,都将其下标更新成对应的索引值。
2024-01-15 22:31:33
2012
1
原创 算法通关村第十四关—数据流的中位数(黄金)
相当于,把所有元素分成了大和小两半,而我们计算中位数,只需要大的那半的最小值和小的那半的最大值即可。比如,我们依次添加[1,2,3,4,5],砍成两半之后为[1,2]和[3,4,5],我们只要能快速的找到2和3即可。Java中的堆(即优先级队列)是使用完全二叉树实现的,我们这里的图也是以完全二叉树为例。小顶堆(minHeap):存储所有元素中较大的一半,堆顶存储的是其中最小的数。大顶堆(maxHeap):存储所有元素中较小的一半,堆顶存储的是其中最大的数。[2,3]的中位数是(2+3)/2=2.5。
2024-01-15 08:29:13
442
1
原创 算法通关村第十五关—继续研究超大规模数据场景的问题(黄金)
题目要求:假设你有一个20GB的文件,每行一个字符串,请说明如何对这个文件进行排序?分析:这里给出大小是20GB,其实面试官就在暗示你不要将所有的文件都装入到内存里,因此我们只能将文件划分成一些块,每块大小是xMB,x就是可用内存的大小,例如1GB一块,那我们就可以将文件分为20块。我们先对每块进行排序,然后再逐步合并。这时候我们可以使用两两归并,也可以使用堆排序策略将其逐步合并成一个。相关方法我们在《查找》一章的堆排部分有介绍。这种排序方式也称为外部排序。
2024-01-14 21:36:38
1025
原创 算法通关村第十五关—海量数据场景下的热门算法题(白银)
题目要求:给定一个输入文件,包含40亿个非负整数,请设计一个算法,产生一个不存在该文件中的整数,假设你有1GB的内存来完成这项任务。进阶:如果只有10MB的内存可用,该怎么办?本题不用写代码,如果能将方法说清楚就很好了,我们接下来一步步分析该如何做。
2024-01-14 21:20:29
918
原创 算法通关村第十五关—用4KB内存寻找重复元素(青铜)
分析:本身是一道海量数据问题的热身题,如果去掉“只有4KB”的要求,我们可以先创建一个大小为N的数组,然后将这些数据放进来,但是这里数组最大为32KB,而题目有4KB的内存限制,我们就必须先确定该如何存放这个数组。题目要求:给定一个数组,包含从1到N的整数,N最大为32000,数组可能还有重复值,且N的取值不定,若只有4KB的内存可用,该如何打印数组中所有重复元素。2^10个比特,这个值比32000要大的,因此我们可以创建32000比特的位向量(比特数组),其中一个比特位置就代表一个整数。
2024-01-14 20:35:24
446
原创 算法通关村第十六关—滑动窗口与堆结合(黄金)
每当我们向右移动窗口时,我们就可以把一个新的元素放入优先队列中,此时堆顶的元素就是堆中所有元素的最大值。然而这个最大值可能并不在滑动窗口中,在这种情况下,这个值在数组nums中的位置出现在滑动窗口左边界的左侧。因此,当我们后续继续向右移动窗口时,这个值就永远不可能出现在滑动窗口中了,我们可以将其永久地从优先队列中移除。为了方便判断堆顶元素与滑动窗口的位置关系,我们可以在优先队列中存储二元组(num,index),表示元素num在数组中的下标为index。滑动窗口每次只向右移动一位,返回滑动窗口中的最大值。
2024-01-14 20:25:50
626
原创 算法通关村第十一关—位运算如何实现压缩存储(黄金)
位运算有个很重要的作用就是能用比较小的空间存储比较多的元素。能帮助我们解决一些海量场景下的数据处理问题。本关内容与第15关《超大规模数据场景常见问题》的青铜挑战是一样的,你可以先思考一下位运算是如何解决问题的。
2024-01-13 20:46:42
436
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人