- 博客(24)
- 收藏
- 关注
原创 JAVA EE_多线程-初阶(二)
我们可以把一段代码想象成一个的厕所,这时候张三去上厕所没把门锁住,正在进行到一半,老六进来了在张三背后说我也要上厕所,这时候张三就给老六吓得强行打断施法,并对老六破口大骂。同时我们把1.1的例子带入到张三老六身上,我们就可以说1.1例子中的代码没有原子性;但如果张三把门锁了,也就是t2的线程等t1的线程运行完之后再运行,我们就可以说这段代码有原子性。我们会把以上现象称为“同步互斥”,表示这个操作是互相排斥的。
2025-04-06 22:38:21
680
原创 JAVA EE_多线程-初阶(一)
我们可以先把进程理解为一个医院的门诊部,而门诊部是一个大类,这里面又有多个门诊,例如:内科门诊,外科门诊,妇科门诊,如果让张三一个人来做是负责不过来的,所以张三叫来了李四,王五,一个人负责一个门诊,这样就大大提高了效率。而张三,李四,王五就是线程,即多线程,其中张三是,因为李四线程和王五线程是由张三线程叫来的。
2025-03-25 22:54:12
1157
原创 JAVA_滑动窗口_水果成篮
先定义左右指针将他们指向数组的0下标,让right先走,同时用哈希表记录走过的水果种类,如果种类超过2的话,就让left走一步,如果left指向位置的水果种类的数量为0,那么就从哈希表中移除该水果,直到right走向数组的最后,放回right和left的相差距离即可。
2025-03-03 22:55:50
225
原创 数据库Mysql_基础与库表的操作及数据结构
数据库20世纪60年代的一项重要产物,主要用来解决数据处理问题,数据处理的主要内容包括:数据的管理,查询,删除,修改等内容。SQL(Structured Query Language)是结构化查询语言的简介,是数据库查询和程序设计语言,用于存取,查询,更新和管理数据库。
2025-03-01 00:14:51
1259
1
原创 JAVA_滑动窗口_最大连续1的个数
这道题我们只要记录0的值不超过题目给的k值,就能得到它最大连续1的最大个数。首先创建双指针left和right同时指向0下标和一个记录0次数的zero还有记录长度的len,再进入right循环(进入窗口),当遇到0值的时候,zero就+1,但zero的值超过题目中给的k值时,判断left位置的值是否等于0,如果不是left就进一步,如果是,zero就-1,left进一步。但zero的值不超过k值时(代表退出窗口),就记录下len的最长长度。
2025-02-26 23:49:14
122
原创 JAVA_滑动窗口_无重复字符的最长字串
这道题我们可以创建一个数组模拟哈希表来排除重复的值。首先创建left和right指针,同时指向该数组的0下标,再创建一个长度值用来存储最长的长度。进入循环(进入窗口),让当前遍历right指向的值的次数+1,当right指向的值的次数大于2时,就代表着有重复的元素在其中,这时候就需要删除left指向的值,right在原地不动,再让left向前进一步(完成这步后就相当于退出了窗口),然后我们就需要更新len的值,将len的值与right-left+1的值进行比较,取最大的那一个值,最后让left前进一步。
2025-02-26 00:18:27
131
原创 JAVA_滑动窗口_长度最小的子数组
我们上述的操作便是滑动窗口,我们进入right循环时,就相当于进入的窗口,当我们跟新完len和sum的值之后就相当与退出窗口。子数组:一个数组中有两个或两个以上的数组成的为子数组。
2025-02-25 23:23:10
155
原创 JAVA_双指针练习_四数之和
四数之和其实就是三数之和的进阶版,操作过程大同小异,不过三数之和是只有一个for循环,而四数之和需要两个for循环。这道题目需要先创建一个List来存储返回的数组。接着再进行排序,使他变得有序,这样就可以更好的执行后面的操作定义一个最左边的量设定为i,再定义i+1的位置的量为j,而j后面就跟着left(指向j+1的位置)和right(数组最后一个位置)。
2025-02-24 13:04:14
196
原创 JAVA_双指针练习_三数之和
该题目需要创建一个List来存储数组;首先我们将数组中的值进行排序,然后找一个值,先将该值设定为i(最左边)。在该值的右区域内利用“双指针算法”找出两个数的和为-i,利用List函数将它的三个数值存储起来,然后让左位置的下标向右移动一位,右位置的下标向左移动一位,再循环遍历下去。但这题还有个重点,那就是删除重复数组:利用“双指针算法”定义left和right,当他们遇到值和上一个值相同时,就需要跳过这个值,i也同理。
2025-02-23 23:12:38
630
原创 JAVA_双指针练习_二数之和
首先创建两个指针变量,一个left指向最左边位置的值,一个right指向最右边位置的值,将题目两个数值的和赋给一个sum变量。当sum值大于target时,right向左走一步;当sum值小于target时,left向右走一步;当sum值等于target时,就临时创建一个数组,将left和right的值赋值进去。
2025-02-23 22:57:47
105
原创 JAVA_双指针练习_有效三角形的个数
三角形的定义:任意两条边大于另一条边就为三角形。正常我们判断是否为三角形无非就是但如果一组数是有序的情况下,我们就只需要取一个最大值并判断a+b>c这个条件,先看以下一组数:left=0right=i-1;这边的i是我们的最大值。当时,left的后面每个数都比它大,与right相乘肯定比10大,所以我们无需再遍历后面的数字,直接取得right与left中的差值便是这一遍所取的三角形的个数,然后right向前一步进行下次遍历,但如果。
2025-02-23 14:59:10
145
原创 JAVA_双指针练习_盛最多水的容器
首先创建两个指针变量,一个指向left指向数组的最左边,一个right指向数组的最右边。因为题目中说不能倾斜容器,所以应该取两个数中最小的一个值,然后将它乘以宽度(right-left)就可以得到盛水的容积。然后将最小的那个值向前或者向后一位移动,最大的那个值保持不变,这样就可以得到最大的一组数,再在这组数中取一个最大数,那么这个最大的数就是最大的盛水的容积。
2025-02-23 14:16:15
130
原创 JAVA_双指针练习_快乐数
先将一个数的各个位的平方加起来,将它赋值给一个值。然后创建两个指针变量,一个slow指向第一个位置的值,一个fast直线第二个位置的值,不管该数是不是快乐数,他们都会进入一个循环,如下所示:那既然是一个循环,那他们肯定会相遇,如果相遇的那个值是1,那么就是快乐数。
2025-02-22 22:00:53
632
原创 JAVA_双指针练习_复写零
这个时候我们的dest为最后一个值,cur为边界值,然后就往前遍历。如果arr[cur]为非零数字时,dest就与cur位置的值交换,同时进行-1的操作,如果为零数字时,dest和dest-1的位置就为0,并再进行一次-1的操作。在遍历的时候当arr[cur]非零数字时,dest就向前进一步,如果遇到零数字时就向前两步,这一步走完后我们要先判断dest是否越界,如果走到数组的最后一位时,就退出该循环,这时候cur指向的就是边界值。
2025-02-22 20:19:55
245
原创 JAVA_双指针练习_移动零
我们将cur表示为先遍历的数组,当cur不为0时,dest就进行加一位的操作,然后dest+1的位置的值与cur位置的值进行交换,反之不进行操作,cur遍历下一个位置的值。如图所示,题目中有提供我们一组数组,而我们需要将数组中非0元素放到左边,0元素放到右边。我们可以定义两个cur和dest指向两个内容,这就是题目中所说的双指针。
2025-02-21 14:34:02
130
原创 C语言---小白看了也能理解的指针(2)
在前一篇的指针(1)中,我们有稍微的提到了,那接下来就让我们详细展开一下吧。如上,我们创建了一个sz来存储sizeof(arr)的大小,再打印出来,结果是20,为什么是20呢,这是因为arr中有5个元素,而每个元素占4个字节,那么打印出来数组arr的大小就是4*5,也就是20个大小,这也就说明了1的观点。
2024-11-12 13:40:40
827
原创 C语言---小白看了也能理解的指针(1)
在计算机中,我们可以用bit Byte KB MB GB TB PB来表示内存,而内存之间也可以相互转换,例如:1PB=1024TP;1TB=1024GB;1GB=1024KB;1Byte=8bit;以上是内存从大到小之间排序的。。在计算机中,每个内存都有相对应的地址,相当于内存的编号,而在上一段中我们把内存比喻成学生宿舍,同理,,我们可以通过门牌号去寻找学生在哪间宿舍,就像在计算机中,我们通过地址去寻找内存一样。而在C语言中,我们就把。综上所述,。
2024-11-10 22:05:27
904
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人