自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

孤舟一叶~的博客

总结Java知识

  • 博客(122)
  • 收藏
  • 关注

原创 力扣每日一题-总行驶距离-2024.4.25

直接用数学模拟计算即可。

2024-04-27 18:01:05 98

原创 力扣每日一题-查询网格图中每一列的宽度-2024.4.27

双层for循环遍历整个矩阵容易想到,只要能想到使用整数转字符串的技巧(“” + 字符串),即可完成题目。

2024-04-27 17:43:07 42

原创 力扣题目:独一无二的出现次数

根据题目要求,可以使用哈希表来统计每个数字出现的次数,然后利用set集合的特性(不能添加重复的元素)来判断是否出现重复次数。

2024-04-26 11:49:20 169

原创 力扣题目:轮转数组

根据从轮转前到轮转后到数组变化,我们可以将数组元素分成两个部分,一个部分数轮转后从右边调到前面,一部分仅仅从左边向右移动。发现这个规律后,将数组分成两部分处理,即可解决问题。

2024-04-26 11:37:24 216

原创 DFS和回溯专题:全排列 II

【代码】DFS和回溯专题:全排列 II。

2024-04-25 21:49:21 260

原创 DFS与回溯专题:全排列

也可以利用list.contains()方法来判断是否被使用,但这种方式会耗费较多时间。所以最好用前面的方法,已空间换时间。回溯问题中的全排列,相对比组合、子集等问题,其元素可以颠倒顺序,所以在for循环中每层都是从头开始,无需标记更新起始位置。

2024-04-25 21:03:44 614

原创 DFS与回溯专题:非递减子序列

这道题关键是排除重复的子序列,同一父节点下的同层上使用过的元素就不能再使用了。

2024-04-24 11:40:27 229

原创 DFS与回溯专题:子集 II

套用回溯的模版,同时要进行剪枝,在同一层中遇到多个相同的元素,使用第一个后跳过后面相同的元素。

2024-04-24 11:11:40 515

原创 DFS和回溯专题:子集

因为题目要求的是数组所有可能的子集,所以通过回溯遍历出来的所有结果都可以添加到结果列表中,代码直接套用回溯模版即可。

2024-04-23 16:54:35 249

原创 DFS与回溯专题:组合总和II

【代码】DFS与回溯专题:组合总和II。

2024-04-23 09:16:30 259

原创 DFS和回溯专题:组合总和

【代码】DFS和回溯专题:组合总和。

2024-04-22 17:05:58 208

原创 DFS与回溯专题:组合总和III

【代码】DFS与回溯专题:组合总和III。

2024-04-22 15:19:02 376

原创 DFS与回溯专题:组合

同时,循环停止的条件,最普通就是用题目给的n。然后参考代码随想录,发现是可以剪枝的。一共需要组合5个数,当你已经确定了前3个数,那第4个数最多只能搜索到9,因为至少要留个10给第5个数。这样,每次循环时都可以进行剪枝。该题为经典回溯问题,题目要求k个数来组合,则利用回溯来进行k层for循环。为了防止重复遍历,要用start参数标记每次for循环遍历的起点。

2024-04-20 16:48:32 214

原创 DFS与回溯专题:电话号码的字母组合

将数字到字母的映射用字符串数组表示出来。然后利用回溯算法,解决n个for循环的问题,枚举出每一种符合要求的情况。这样会导致num在循环中重复加很多次,导致递归时出现问题。

2024-04-20 10:43:08 185

原创 DFS与回溯专题:二叉树的最大深度

设置两个变量,max来记录最大值,sum来记录路径的节点数量。利用dfs对二叉树进行搜索,遇到节点,则sum+1;遇到叶子节点,则将max与sum进行比较,取最大值。

2024-04-19 09:34:35 216

原创 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 800

原创 DFS与回溯专题:力扣岛屿问题合集(持续更新)

每次做到DFS相关的题目都是直接跳过。蓝桥杯过后痛定思痛,好好学习一下DFS和BFS。先从DFS开始吧。

2024-04-15 16:10:27 682

原创 macbook(m1) ubuntu下载,复制粘贴和国内镜像源配置

官网下载打开后根据电脑的架构选择安装包,想要下载其他版本也可在官网中自行搜索。我安装时舍友说他安装的是22.04这个版本,我也就跟着他安装了注意:下载的版本最好有对应版本的国内镜像源(阿里,清华等),否则以后使用时可能很麻烦。点击链接,往下找看到阿里的ubuntu镜像源有22.04版本的,稳啦由于之前安装过win11和centos7,所以虚拟机软件的安装流程已经没什么印象,对ubuntu的安装在此也不赘述了,有需要的可以前往下面链接,我也是根据下面大佬的步骤完成安装的。

2024-04-02 16:18:36 903

原创 ip地址改变导致nacos无法登录的解决方法

在做黑马的springcloud课程里的黑马商城微服务项目时,发现使用nacos的默认账号密码(nacos,nacos)无法登录,项目里也没报错信息,虽然猜测和ip地址改变有关,但还是折腾了几个小时。最后看到b站的评论区,参考了建议,才解决了问题。

2024-03-28 15:16:27 424

原创 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 1022 1

原创 Mybatis知识点总结(基于黑马2023javaweb课程)

1.数据库连接池是个容器,负责分配、管理数据库连接(Connection)2.它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个3.释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。

2024-03-09 15:54:45 974

原创 力扣每日一题-最长交替子数组-2024.01.23

 今天的力扣打卡题是道简单题,写完立刻就发出来啦。 这道题可以简单地用双层循环来解决,外层循环遍历整个数组,内层统计满足要求的子数组的长度。判断的时候注意先1再-1再1的循环次序即可。结语 如果这道题的分享对您有所帮助,点个赞或关注,我会每天更新力扣题目的分享。

2024-01-23 09:46:50 461 1

原创 力扣每日一题-最大交换-2024.01.22

 好久没有更新力扣的每日一题了,今天刚好先做了这道题,就发一下吧。  这道题用了贪心的思想,在交换的时候,要选择交换后最大的值。  首先,要创建两个数组,一个正常记录值为arr1,一个利用sort排序排好为arr2。然后从高位开始对比,比较出第一个不相同的数字,这个数字的位置就是需要变换的第一个位i,  而第二个要变换位置的地方,其数值为第一个不相同的数字中arr2的值。根据最大化的要求,我们要尽量从低位寻找这个值,所以从arr1低位开始寻找,找到后进行交换即可。结语  如果这道题的分享对您有所帮助

2024-01-22 09:42:17 394

原创 算法通关村第十七关—贪心其实很简单(青铜)

LeetCode455,分发饼干:假设你要给孩子们一些小饼干。但是每个孩子最多只能给一块饼干。每个孩子的饭量不同,对每个孩子ⅰ,都有一个胃口值9[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸s[j]。如果s[j]>=g[i],我们可以将这个饼干j分配给孩子ⅰ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例:其中g是胃口,s是拥有的饼干。首先对g和s进行排序。然后从小到大遍历g中的每一个元素,对于每个元素找到能满足该元素的s中的最小元素。

2024-01-17 17:08:06 370 1

原创 算法通关村第十六关—滑动窗口经典问题(白银)

LeetCode3给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。要找最长子串,必然要知道无重复字符串的首和尾,然后再从中确定最长的那个,因此至少两个指针才可以,这就想到了滑动窗口思想。定义一个K-V形式的map,key表示的是当前正在访问的字符串,value,是其下标索引值。我们每访问一个新元素,都将其下标更新成对应的索引值。

2024-01-15 22:31:33 1101 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 394 1

原创 算法通关村第十五关—继续研究超大规模数据场景的问题(黄金)

题目要求:假设你有一个20GB的文件,每行一个字符串,请说明如何对这个文件进行排序?分析:这里给出大小是20GB,其实面试官就在暗示你不要将所有的文件都装入到内存里,因此我们只能将文件划分成一些块,每块大小是xMB,x就是可用内存的大小,例如1GB一块,那我们就可以将文件分为20块。我们先对每块进行排序,然后再逐步合并。这时候我们可以使用两两归并,也可以使用堆排序策略将其逐步合并成一个。相关方法我们在《查找》一章的堆排部分有介绍。这种排序方式也称为外部排序。

2024-01-14 21:36:38 970

原创 算法通关村第十五关—海量数据场景下的热门算法题(白银)

题目要求:给定一个输入文件,包含40亿个非负整数,请设计一个算法,产生一个不存在该文件中的整数,假设你有1GB的内存来完成这项任务。进阶:如果只有10MB的内存可用,该怎么办?本题不用写代码,如果能将方法说清楚就很好了,我们接下来一步步分析该如何做。

2024-01-14 21:20:29 841

原创 算法通关村第十五关—用4KB内存寻找重复元素(青铜)

分析:本身是一道海量数据问题的热身题,如果去掉“只有4KB”的要求,我们可以先创建一个大小为N的数组,然后将这些数据放进来,但是这里数组最大为32KB,而题目有4KB的内存限制,我们就必须先确定该如何存放这个数组。题目要求:给定一个数组,包含从1到N的整数,N最大为32000,数组可能还有重复值,且N的取值不定,若只有4KB的内存可用,该如何打印数组中所有重复元素。2^10个比特,这个值比32000要大的,因此我们可以创建32000比特的位向量(比特数组),其中一个比特位置就代表一个整数。

2024-01-14 20:35:24 404

原创 算法通关村第十六关—滑动窗口与堆结合(黄金)

每当我们向右移动窗口时,我们就可以把一个新的元素放入优先队列中,此时堆顶的元素就是堆中所有元素的最大值。然而这个最大值可能并不在滑动窗口中,在这种情况下,这个值在数组nums中的位置出现在滑动窗口左边界的左侧。因此,当我们后续继续向右移动窗口时,这个值就永远不可能出现在滑动窗口中了,我们可以将其永久地从优先队列中移除。为了方便判断堆顶元素与滑动窗口的位置关系,我们可以在优先队列中存储二元组(num,index),表示元素num在数组中的下标为index。滑动窗口每次只向右移动一位,返回滑动窗口中的最大值。

2024-01-14 20:25:50 551

原创 算法通关村第十一关—位运算如何实现压缩存储(黄金)

位运算有个很重要的作用就是能用比较小的空间存储比较多的元素。能帮助我们解决一些海量场景下的数据处理问题。本关内容与第15关《超大规模数据场景常见问题》的青铜挑战是一样的,你可以先思考一下位运算是如何解决问题的。

2024-01-13 20:46:42 378

原创 算法通关村第十一关—位运算的高频算法题(白银)

LeetCode191 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为1’的个数。题目给定的n是32位二进制表示下的一个整数。解法一:遍历的二进制表示的每一位,判断每一位是否为1,同时进行计数。也就说将原始数字和1进行&运算就能知道最低位是不是1了,那其他位置怎么算呢?我们可以有两种思路,让1不断左移或者将原始数据不断右移。

2024-01-13 19:50:59 1535

原创 mac快捷创建文件的方法

在macbook的使用中,当我们在桌面或访达等地方使用右键时,可以看到新建文件夹的选项,却怎么也找不到创建文件的选项。这种情况有时候会带来不便。这篇文章给大家带来一个非常简单解决这个问题。

2024-01-13 16:05:20 821

原创 算法通关村第十一关—理解位运算的规则(青铜)

与运算的符号是&,运算规则是:对于每个二进制位,当两个数对应的位都为1时,结果才为1,否则结果为0。或运算的符号是,运算规则是:对于每个二进制位,当两个数对应的位都为0时,结果才为0,否则结果为1。异或运算的符号是⊕(在代码中用∧表示异或),运算规则是:对于每个二进制位,当两个数对应的位相同时,结果为0,否则结果为1。取反运算的符号是~,运算规则是:对一个数的每个二进制位进行取反操作,0变成1,1变成0。以下例子显示上述四种位运算符的运算结果,参与运算的数字都采用有符号的8位二进制表示。

2024-01-13 15:38:26 1027

原创 算法通关村第十四关—堆能高效解决的经典问题(白银)

LeetCode215 给定整数数组ums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。这个题比较好的方法是堆排序法和快速排序法。快速排序在第十关白银挑战已经分析过,这里先看堆排序如何解决问题。这个题其实用大堆小堆都可以解决的,但是推荐“找最大用小堆,找最小用大堆,找中间用两个堆”,这样更容易理解,适用范围也更广。构造一个大小只有4的小根堆,为了更好说明情况,我们扩展一下序列[3,2,3,1,2,4,5,1,5,6,2,3]。

2023-12-31 17:42:48 925 1

原创 算法通关村第十关—归并排序(黄金)

归并排序(MERGE-SORT)简单来说就是将大的序列先视为若干个比较小的数组,分成几个比较小的结构,然后是利用归并的思想实现的排序方法,该算法采用经典的分治策略(分就是将问题分(divide)成一些小的问题分别求解,而治(conquer).则将分的阶段得到的各答案"合"在一起)。可以看到这种结构很像两棵套在一起的满二叉树。分阶段可以理解为就是递归拆分子序列的过程,递归深度为logn。就是图中上面侧的满二叉树。再来看看治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,就是下侧的满二叉树。

2023-12-24 14:09:14 150 1

原创 算法通关村第十关—数组中第K大的数字(白银)

这里还有一个关键信息,我们可以知道26的索引为3,所以递增排序之后26一定是第4大的元素。这就是解决本问题的关键,既然知道26是第4大,那如果我要找第2大,一定是要到右边找。如果要找第6大,一定要到左边找(当然,如果降序排序就反过来了),而不需要的那部分就不用管了。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。可以看到26最终被放到了属于自己的位置上,不会再变化,而26的左右两侧可以分别再进行排序。我们还是看上面排序的序列:{26,53,48,15,13,48,32,15}

2023-12-23 15:46:40 94

原创 Mac版MySQL开启服务及终端进入MySQL的基本操作

下载完成后,系统偏好设置->MySQL如图显示,左边是绿色的,右边的按键显示是Stop MySQL Server,说明服务已经开启。

2023-12-23 11:12:07 293

原创 算法通关村第十四关—堆结构(青铜)

堆的价值就在于大顶堆的根节点是整个树最大的那个,增加时会根据根的大小来决定要不要加,而删除操作只删除根元素。这个特征可以在很多场景下有奇妙的应用,后面的算法题全都基于这一点。这里可能有些人还有疑问,感觉不管插入还是删除,堆的操作都不简单,那为什么还说堆的效率比较高呢?这是因为堆元素的数量是有限制的,一般不用将所有的元素都放到堆里。后面题目中可以看到,在序列中找K大,则堆的大小就是K。如果K个链表合并,那么堆就是K。原理后面详细展开。1. 查找:找大用小,大的进;找小用大,小的进。

2023-12-21 15:00:38 70

原创 算法通关村第十六关—滑动窗口(青铜)

在数组章节我们说过很多算法会大量移动数组中的元素,频繁移动元素会导致执行效率低下或者超时。使用两个变量能比较好的解决很多相关问题,在《一维数组》和《链表》章节我们介绍了很多典型例子,于是这种方式就慢慢演化成了“双指针思想”。在数组双指针里,我们介绍过“对撞型”和“快慢型”两种方式,而滑动窗口思想其实就是快慢型的特例。滑动窗口的思想非常简单,如下图所示,假如窗口的大小是3,当不断有新数据来时,我们会维护一个大小为3的一个区间,超过3的就将新的放入老的移走。

2023-12-20 15:05:28 57

空空如也

空空如也

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

TA关注的人

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