Latest Posts

文章

记录技术、生活和一些阶段性的想法。

算法学习749 字565 阅读

算法分析-二叉树展开为链表

今天继续研究算法:二叉树展开为链表 给你二叉树的根结点 ,请你将它展开为一个单链表:展开后的单链表应该同样使用 ,其中 子指针指向链表中下一个结点,而左子指针始终为 。展开后的单链表应该与二叉树 顺序相同。 进阶:你可以使用原地算法(O(1) 额外空间)展开这棵树吗? 看到这个题我的头就开始痛了,因为好久没接触树了,连遍历方法都忘得一干二净了,不过既然遇到了那就把它解决掉,长痛不如短痛。 先捡一下…

算法学习#动态规划2288 字542 阅读

算法分析-最大子数组和

刚做了乘积最大子数组,现在趁热打铁继续研究:最大子数组和 给你一个整数数组 ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 理解上一题之后,再看这道题就简单了。 不用担心负号会直接将结果反转,所以不用记录下最小的值。 只需要当前面的子串之和已经是负数时,就截断子串,由当前值重新开一个子串即可。 光说概念有些抽象,现在我将拆解一个例子来…

算法学习#动态规划1443 字243 阅读

算法分析-乘积最大子数组

继续研究:乘积最大子数组 给你一个整数数组 ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个 32 位整数。注意,一个只包含一个元素的数组的乘积是这个元素的值。 这个题的关键在于处理 和负数,因为正数连乘只会越乘越大。 子串中有 ,乘积结果就是 。 子串中有奇数个负数,越乘越小;有偶数个负数,负负得正,也会越来越大。 我尝试使…

算法学习#滑动窗口1168 字203 阅读

算法分析-无重复字符的最长子串

继续研究:无重复字符的最长子串 给定一个字符串 ,请你找出其中不含有重复字符的最长子串的长度。 首先想到的方法是遍历并将字符压入栈中,遇到已经在栈中存在的元素则记录下栈的长度后清空栈,对字符串中每一个字符都如此操作一遍。 不出我所料,提交时果然超时了。 时间 $O(n^3)$:外层循环 次,内层遍历 最坏 次,每次 要线性扫描栈(最坏 ),三层相乘。空间 $O(n)$。 优化一下。既然清空栈的时候…

算法学习472 字159 阅读

算法分析-删除链表的倒数第 N 个结点

今天继续尝试:删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 个结点,并且返回链表的头结点。 我的想法是:使用两个指针,让它们相隔 个节点,然后同时向后移动。当后面的快指针到达链表末尾时,慢指针的位置就是待删节点的前驱。 这里使用哨兵节点的原因是为了方便删除节点,比如 等于链表长度时需要删除头节点,不使用哨兵节点的话无法操作。 使用双指针,一趟扫描完,$O(n)$ 时间 $O(1)$…

算法学习383 字178 阅读

算法分析-有效的括号

继续研究:有效的括号 给定一个只包括 、、、、、 的字符串 ,判断字符串是否有效。 有效字符串需满足:左括号必须用相同类型的右括号闭合,左括号必须以正确的顺序闭合,每个右括号都有一个对应的相同类型的左括号。 这道题我曾经做过几次,思路基本上是用栈后进先出的特性来解决。 遇到左括号,压入栈中。遇到右括号,看与栈顶左括号能否匹配上,能匹配则弹出栈顶;与栈顶不匹配直接返回 。一一匹配完后看栈中是否还有剩…

算法学习547 字196 阅读

算法分析-移动零

继续尝试:移动零 给定一个数组 ,编写一个函数将所有 移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。 一开始读题,想把所有 移动到数组的末尾,发现不好处理非零数的顺序。转念一想,将所有非零数移动到数组前面,剩下的不就都是 了吗。 想到前面快速选择中有用到一个方法:将大于基点的数移动到基点左边,小于基点的数放在基点右边。在这里我们把 看作基点,就能…

算法学习1386 字170 阅读

算法分析-合并 K 个升序链表

今天尝试:合并 K 个升序链表。 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 思考半天没有头绪,试试暴力解法:遍历链表将所有节点放入一个数组,排序后转成新的链表返回。 比较取巧,利用了 Python 本身的排序。 时间复杂度:$O(N \log N)$, 是所有节点总数。空间:$O(N)$( 数组)。 这里并没用到"每条链表本身已经有序"这…

算法学习1085 字168 阅读

算法分析-打家劫舍

继续尝试:打家劫舍。 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 就是说,在数组中找到一些数加起来之和要最大,但是这些数在数组中不能是相邻的。 简单…

算法学习870 字158 阅读

算法分析-字母异位词分组

今天研究:字母异位词分组 给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表。 读题发现,就是说两个词的字母相同,但是顺序不同,一个词可以通过调整字母顺序变成另一个词,这两个就是字母异位词。 理论上来说,遍历一遍数组,将元素一个个归类就行,难点在于如何知道两个词是异位词。 我首先的想法是将字符串排序,异位词经过排序后就变成了相同的词。然后将排序后的字符串作为 放到字典中归类…

算法学习2298 字131 阅读

算法分析-数组中的第K个最大元素

今天尝试:数组中的第 K 个最大元素。 给定整数数组 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。你必须设计并实现时间复杂度为 $O(n) $的算法解决此问题。 第一眼没认真读题——返回数组第 k 大的,那不就是排序后直接返回 不就行了。 提交通过,正好奇这个题为什么这么简单,仔细看题发现要求时间复杂度为 $O(n…

算法学习939 字191 阅读

算法分析-每日温度

今天继续研究算法:每日温度。 给定一个整数数组 ,表示每天的温度,返回一个数组 ,其中 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 一读题目感觉很简单,就只用操作一个数组,但是想优雅的完成,还是需要耗费一点脑细胞。 先写个暴力破解进入状态: 时间复杂度是 $O(n²) $(更具体来说是$n²/2$,大 O 里常数 1/2 被忽略)。 又遇…

算法学习726 字182 阅读

算法分析-相交链表

今天继续研究算法,是一个链表的题目,我对链表还不是很熟悉:相交链表。 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。你能否设计一个时间复杂度 O(m + n) 、仅用 O(1) 内存的解决方案? 开始我想的思路是,既然要相交节点的值,那么从尾巴往前遍历不就很方便了。但是忽略了这不是数组,单链表没有 指针,…

算法学习1412 字132 阅读

算法分析-三数之和

最近在学python,研究个算法来练练手:三数之和。 看题目我想出了两种思路: 思路1:列出所有可能的三元组,去重,计算和是否为0。比较暴力,可能的组合太多,消耗太大。 思路2:两两组合求和,再在剩余的数组中看是否有能加起来为0的项,消耗也不少,但是先试试。 双层遍历两两组合,使用拿到索引后,内部循环使用切片来避免重复组合。表示从索引的下一个位置开始到数组末尾的所有元素。 下一步是在数组中寻找是否…

日记739 字397 阅读

早上五点起床赶早口,结果还是空军的一天

周六 阴 这一周过得真慢,终于到周六了。自从上周没钓到鱼之后,潜心学习了一周的钓技,今天终于可以实操了。 昨天下班就收拾好装备,定好五点闹钟,今天早上准时起床直接出发了。天刚蒙蒙亮,环卫工人已经开始工作,早餐店也才刚打开门准备营业。 六点左右到达百花湖钓鱼点,有钓友夜钓结束刚收杆准备回去,有的也才不久到刚摆好装备。 坐下直接找组装好杆子直接找水深,剪铅皮,调四钓二。调好飘之后才发现有钓鱼的感觉了,…

日记876 字473 阅读

今天终于看完了《凡人修仙传》小说

周三 晴 今天终于把《凡人修仙传》看完了。 很久没有看玄幻小说了,现在读完一本,切身体会到了终不似少年游。初中那会没有智能手机,好在基本上都有电子书的功能。以前使用一个手机和电池都不匹配的破手机看小说都看得津津有味,能够完全沉浸在玄幻的世界中。夜幕降临是我最喜欢的时光了,不用受外界干扰,在被窝里闭关修仙。即使是高中和大学,小说都陪伴我走过很长一段路。 还记得我看的第一本小说是我吃西红柿的《盘龙》,…

日记500 字293 阅读1

周末骑车

周日 晴 坚持每天写日记比我想象中的要难很多。 一个星期前定下要每天写日记的目标后,总是没能按时完成。有时是一整天好像没什么可以记录的,有时是一天想写的太多,不知从何说起,一分神习惯性的打开了其他app,结果在玩手机后又忘记想写什么了。 不管了,随意一点,想到啥写啥吧。 贵阳已经连续下了好久的雨了,难得昨天没有下,去骑了一下自行车。距离比较短,来回共六七公里。是一条没有走过的路。骑到了妻子曾经所读…

日记890 字246 阅读

电影《四渡》观后感和日记

周四 阴 今天下午公司组织看电影,广电出品的《四渡》,因为我们是集团下的子公司,所以全员都去观看。 我特别在意其中的一个细节:毛泽东问周恩来蒋介石是怎样的一个人,周恩来说蒋介石无论多忙都会抽出时间来写日记,记录一天所感,二十年来从不间断。能把一件小事坚持这么久的人,是一个可怕的对手。 前几天我在下班路上听播客知行小酒馆的时候,有一期说的是一个女人在从怀上孩子的时候一直写日记记录自己,直到离世。细节…

AI#AI Agent1127 字905 阅读

最近对AI Agent使用的一些感受

我接触对话型AI比较早,好几年前就开始使用ChatGPT了。但是对AI Agent的使用相对较晚,前不久Open Claw大火的时候才开始接触这个概念。 关于大模型的话,Deepseek刚开源的时候在自己电脑上部署过v1的版本。由于硬件的限制,体验很差,就没有深入的研究。 最开始是使用Cursor,感觉很不错。以前使用ChatGPT来写代码的时候。做的最多的事情就是不断的复制粘贴。现在很方便,它能…

技术相关#API#前端工程架构1054 字414 阅读

集成Ovral,解决前端手抄API的痛点

当一个人又写接口又写前端的时候,最大的痛苦莫过于接口改动后还要修改前端项目并重新部署。 以前在项目少、接口不多的时候还没有感觉。现在项目多了之后,改动一个接口就要去使用这个接口的前端项目挨个改。尤其是加了TS之后,还要手动维护类型标注,头更痛了。 我司使用的是YAPI,研究一下发现太重了,并且配置复杂。我找到了一个更轻量、配置更少的解决方案: Ovral。 我的JAVA项目一开始就配置有swagg…