- 博客(77)
- 收藏
- 关注
原创 leetcode_283.移动零
本道题采用双指针的思想完成,可以使用快慢指针的思想,通过快指针遍历数组找出数组中的非零元素,用慢指针来维护有效值。可以先根据题目的条件手搓出来一个测试,方便理解。没错是这样的,这样就找到了数组中所有不为。,最终遍历完毕,fast最后指向了索引。号索引,开始向后找,一旦发现不为。的数字进行交换,第一次找到了。索引处,第一次发生在索引为。的时候,经过操作,得到了。,slow最后指向了索引。的时候,经过操作得到了。的时候,经过操作得到了。,第二次发生在索引为。,第三次发生在索引为。向前遍历,当找到不为。
2025-06-11 16:02:35
384
1
原创 Java_try...catch(异常)
catch中是空指针异常,最后输出的还是数据索引越界异常,而且程序没有正常结束,由此得出,捕获异常之后没有与之对应的catc就会交给虚拟机来进行处理。当try代码遇到问题,之后的代码就不会执行了,直接跳转到对应的catch,如果没有对应的catch与之匹配,则交给JVM虚拟机处理。第一个情况 ,就是我们在使用try捕获异常时,如果try中没有异常出现,我们就会一直执行代码,并且不会执行catch中的代码。由最后的结果我们知道,其实只执行了数组索引异常的处理,由此引出我们的第三种情况。
2025-06-11 01:38:28
286
原创 leetcode_35.搜索插入位置
暴力的代码我来说一下,主要就是遍历整个数组,通过寻找第一个大于等于target的值,等于的话就是找到了这个元素,直接返回其下标,大于的话等于就是这个元素必须插入到这里。最后循环结束,没有找到的话,表明target大于数组中的所有元素,返回这个数组最后一个位置就Ok了。首先这个题暴力也可以过,但是题目要求我们使用O(log n)时间复杂度的算法,所以我们这道题还是试用二分的方式来解决,依旧是往期的两个模板,这里我们都写一下。
2025-06-10 15:03:59
302
原创 leetcode_69.x的平方根
对于刚好等于的我们直接返回 即可 ,对于有小数的我们就需要想一下了,例如 8 的 话 2 * 2等于4 3 * 3 等于9,那么根据题目我们就需要找到2和3,然后返回2作为答案,这样的话也是可以过的(不过需要注意的是 ,需要使用long long 哦,去最坏情况的话 i =INT_MAX也就是2的31次方减一,再做乘法的话会超出int的取值范围,造成 上溢的情况 ),不过算法复杂度是O(N),有点高了,我们下来尝试着用二分法去优化一下。左闭右闭的话,那么我们应该是小于等于的,为什么呢?
2025-06-09 01:38:47
238
原创 leetcode_66.加一
2.下来我们就可以对这个数组进行处理了,因为只加一 ,我们的个位最大为10,然后依次向上进位,判断我们每一位的数字,如果数字大于等于10的话 ,那我们就令高位加一 ,同时使本位减10.这里需要注意的是,我们最高的一位需要最后特殊处理 ,我们在判断的过程中并不能直接给后面添加一位,所以我们这一步的代码也就得到了;题是这样的,根据题目我们不难理解,这个题就是在最后一位加 1 然后返回,正如示例所说的那样,当然这很符合我们人的思维,写这种算法题最重要的就是考虑一些极限的情况,例如。
2025-06-08 01:54:00
310
原创 数组模拟栈
理解起来也好好理解,在c++的 STL 中也有相对应的容器 stack 栈的最常用的几种情况就是。,这就是因为我们在打印了栈顶元素之后弹出了栈顶元素,使得栈顶元素从 9 变为了 8 又变为了 5 ,这就是栈中最基本的三个使用 最后来说说 empty。我们栈已经为空的时候再弹出的话程序就会直接崩掉,我们在弹出和获取栈顶元素前加入一个empty 就可以完美的解决这个问题。压栈(给栈顶插入元素),查看栈顶元素,查看栈是否为空,以及将栈顶元素弹出。这是因为栈顶的特性,栈顶的元素一直是 9 ,下来看图瞅瞅。
2025-04-04 17:05:44
247
原创 priority_queue练习
分析问题:就是每一次从菜篮子中拿掉最大的菜,然后丢掉,问操作完成之后篮子里的菜的重量。“2”,将菜篮子中重量最大的菜丢掉(如果菜篮子为空,则跳过)。Q次操作后,菜篮子中剩下的菜的总重量。注意,需要开 long long。“1 x”,将一个重量为。x的菜放入到菜篮子中。
2025-03-07 20:24:55
217
原创 优先队列priority_queue应用
优先队列 priority_queue 换种话来说就是堆,只可以从中取到最大或者最小的值,所以说,只维护堆顶。它使用less()作为比较函数,即元素的优先级按照从大到小的顺序排列。也就是说,如果我要取最大值,那么我就不管(使用其默认的less),我要取最小值,那么就要使用greater()如果我们使用greater的话那么每次就会找到这个堆的最小值,我们可以用这个方法找出数组或者vector容器中的最大最小值,或者给数组或者容器排序。
2025-03-07 20:03:16
312
原创 2024蓝桥杯省赛真题-封闭图形个数
拿到题目,咱们先来分析一手,上来就是封闭图形,那我们直接将这个封闭图形用一个数组记录下来,根据题目要求,我们得到了st数组这就是0-9数字的封闭的数字然后下一段,分析一下,它们的封闭图形个数不同,那么封闭图形个数较多的数更大,反之就是值大的数大,如果值相同,就是相等的,就不用排序了最终输出排序后的结果现在我们来想,我们这个st数组只记录了一个数字的封闭值,让如果是两位数,三位数呢?OK 啊,我们直接把他们拆开分别计算不就 好了嘛!!说干就干,开搞,这道题的最大范围是 2e5 一定要看清楚题目的数据范围!
2025-03-02 14:41:33
557
原创 蓝桥杯(握手问题)
从图片中,我们可以看出来,总共50个人,第一个人和除了他自身之外的别人握手,总共握了49次(蓝色),第二个人握了48次(黄色)一直到最后一个人,最后一个人就不用主动去握手了,因为别人已经全和他握过手了。小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。开始分析:总共有 50 个人,每个人都要和除了自己以外的其他人握手,但是呢就是有7个劳弟互相不想握手,让我们算最后握了多少次手。这样我们就算出了50个人的握手总数,用相同的办法,我们可以算出7个人的握手总数,然后作差,就得到了我们最终的答案。
2025-02-28 19:24:12
858
1
原创 数据结构_链表(带有头节点)
之前我们写过的链表基本都是不带头节点的,但是有些算法题,它就要给你来一个带头节点的玩意,我们应该如何写呢?那么,我们要带头节点,首先我们就要开辟一个节点出来当头节点,也就是初始化。不带头节点的用的比较多,这里我只写头插和尾插。初始化之后我们就是完成尾插,头插,打印函数。
2024-11-10 10:00:00
235
原创 链表反转_带有头节点
第一步呢,我们利用end来获取end的下一个节点的地址,然后将a1直接指向这个节点。我们在最开始的时候end 就代表的尾节点,所以当我们的end!上一篇,我们介绍了如何反转不带头节点的链表,这一篇,我们来写带头节点的链表。现在我们只需要循环起来就好了,那么我们的循环结束条件是什么呢?初始大概就是这样的,head什么都没有,只记录了下一个节点的地址。首先确认要反转的对象,我们这里需要将a1和a2进行反转。第三步,我们将a2的next变为a1。我们总共分为4步来完成我们的链表反转。我们该怎们样让它反转呢?
2024-11-09 16:38:17
394
原创 leetcode_206.反转链表
单项链表的反转———这里我们使用了中间变量temp来记录pcur->next,方便我们使用,在我们头插之后,将头插过来的新元素设置为新链表的头节点。如果我们这样做了,那么就要断开 head 和 head->next 的链接,我们就找不到head->next的位置了,那么我们该怎们办呢?题目中还给了我们一个结构体类型的函数,所以我们题目的最后是要返回一个结构体指针的——首节点!初始就是这样滴,我们创建了一个新的链表,将其的首节点设置为空,命名其为newnode.首先呢,我们的链表分为带头节点和不带头节点两种!
2024-11-09 15:51:49
582
原创 Java项目练习_学生管理系统
代码实现了基本的学生管理系统功能,包括登录、注册、忘记密码、添加、删除、修改和查询学生信息。使用了ArrayList来存储用户和学生信息。使用了Scanner类来处理用户输入。
2024-10-31 01:46:47
1077
原创 Java中键盘录入问题之 next 和 nextLine
当使用Scanner对象的next()方法时,它会读取输入直到遇到第一个分隔符(默认是空白字符,包括空格、制表符、换行符等),然后返回这个标记作为一个字符串。结论:next()方法无法接受空格,空格之后的数据仍然存在于输入流中,等待被后续的next()或nextLine()调用读取。我们的next无法接收空格,导致了我们str接受了空格和空格后面的数据,所以会打印。这两者的根本区别就是一个可以将空格录入进去,一个不能将空格录入进去。
2024-10-30 10:30:00
315
原创 StringJoiner
StringJoiner概述:StringJoiner和StringBuilder一样,也可以看成是一个容器,创建之。中间这又 “[” 又 "]"的,而且还要判断是不是最后一个,来决定要不要输出 “,”。StringJoiner并没有在java.lang核心包中,所以我们要使用还需要导包。在上一篇中,我们使用了StringBuilder类完成字符串的拼接。作用:提高字符串的操作效率,代码编写简单。所以,这一篇我们来解决这个问题!后里面的内容是可以改变的。
2024-10-27 20:32:47
325
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人