算法笔记
算法笔记,做备忘。
Cx04187
这个作者很懒,什么都没留下…
展开
-
7. 整数反转题解
这其实不算一道中等题,反转整数,一个简单的想法就是当作字符串来处理,来进行反转即可,没有啥陷阱。原创 2023-04-27 21:06:43 · 80 阅读 · 0 评论 -
9. 回文数题解
一道简单题,还是要注意left right的合理定位,其实其他的都是虚的,还是要根据实际情况,看如何确定左右的两个值。原创 2023-04-27 21:02:45 · 93 阅读 · 0 评论 -
27. 移除元素
关键是怎么组织左右两边的指针,一点心得就是 双循环,一般情况下可以转化为双指针,另外一些需要额外的容器来协助的,也可以试着转化为双指针。原创 2023-04-27 21:00:42 · 59 阅读 · 0 评论 -
209. 长度最小的子数组题解
用暴力法解,java超时了,js没有超时,如下第一个就是用js暴力解的。而后用js代码写滑动窗口的方式解题,效率比暴力解提升了近一千倍。要确认窗口范围,还需要确认所求的结果!原创 2023-04-27 20:57:37 · 65 阅读 · 0 评论 -
3. 无重复字符的最长子串题解
滑动窗口的思路解决。这个题的特点就是第一点是要找子串,要一直往后面找,直到遇到终止条件,第二点就是如何转化往后找的过程中,能回来,而后又重新开始找。滑动窗口就是双指针,左指针定位在开始位置arr[0]的位置,而右指针定位在左指针的前一位arr[-1]的位置。右指针的确定是精髓。在一开始的推导过程中,如果把右指针的位置确定在arr[0]的位置,则第一个字符,不好加入集合,定位为-1则每+1一次则指向后面一位,这里面包含了arr[0]的位置。原创 2023-04-27 20:10:41 · 55 阅读 · 0 评论 -
1. 两数之和题解
内存消耗:41.3 MB, 在所有 JavaScript 提交中击败了87.42%的用户。内存消耗:41.6 MB, 在所有 JavaScript 提交中击败了50.89%的用户。执行用时:176 ms, 在所有 JavaScript 提交中击败了11.39%的用户。执行用时:72 ms, 在所有 JavaScript 提交中击败了61.55%的用户。直接解法,两个循环搞定。原创 2023-04-27 20:06:19 · 68 阅读 · 0 评论 -
169. 多数元素题解
感觉这应该是最简单的方式来实现这道题了。要注意n/2的取值应该取下限,不能用ceil取上限,因为可能会有数组越界的问题。原创 2023-04-27 19:57:49 · 61 阅读 · 0 评论 -
23. 合并 K 个升序链表题解
3. 先解构ListNode对象,使其变成数组,再由数组转变成ListNode对象,应该是很耗时的,这个应该优化,如果要优化,直接解法应该是行不通的。1. 输入和返回值的不同,这道题用例输入的数组,空数组的情况下,代码中要返回的却是null。执行用时:112 ms, 在所有 JavaScript 提交中击败了44.90%的用户。2. 因为是直接解的,所以有很多边界条件需要处理,比如寻找第一个有序序列时的边界条件。这道题一开始只能想到用这种方法来解,我推测应该是能过的,实际上确实能过。原创 2023-04-27 19:55:34 · 123 阅读 · 0 评论 -
240. 搜索二维矩阵 II
这道题用时很短,第一次尝试使用直接查找的方式来得到结果,没有想能通过的,但是通过了。第二次就使用二分查找来得到结果,因为有行/列都是升序,而且行指定了最多300行,符合二分查找的特点,所以采用对每一行进行二分查找,速度快了近10倍。原创 2023-04-27 19:52:23 · 61 阅读 · 0 评论 -
875 吃香蕉题解
第二个点是吃完总时间的计算错误,我理解的是一堆吃不完的挪到下一堆吃,所以第三个示例一直都过不了,实际是这一堆吃不完的也要算一小时,后面的一堆按一堆的来算。第一次做理解错了3个点,第一个点是区间取错了,是0-总和。第三点是没有注意题目边界,最少要吃一个。原创 2023-04-27 19:49:44 · 64 阅读 · 0 评论 -
1011. 在 D 天内送达包裹的能力题解
最后比较实际需要的天数和给定的天数,如果比给定的天数小或者等于给定的天数都说明载重过大,不是最低运载能力;high:同样由于包裹不能拆分,一次最低运一个包裹,所以最大值是把传送带上所有的包裹都运走,所以high为所有包裹重量的总和,即一次性都运走。问days天内送走所有包裹的船的最低运载能力,就是问:在这个载重情况下,一共需要多少天,而后看按这个载重实际需要多少天。low:由于包裹不能拆分,船起码要能运输一个货物,所以运载能力的最小值不能低于传送带上一个包裹重量的最大值,为10。寻常的二分查找题目。原创 2023-04-16 10:10:18 · 56 阅读 · 0 评论 -
1552. 两球之间的磁力题解
这个题最难的点在于,怎么知道在给定的磁力值下,可以放置多少个球。其实就是在排序之后,从第一个开始往后找相邻的两个来比较绝对值大小,如果得出来的磁力值等于给定的磁力值,说明最起码的磁力值要求已经满足,容易忽略的是大于给定的磁力值情况,大于给定的磁力值即说明磁力值仍可以加大一些,它仍是合法的。同理比较在给定磁力值的情况下算出来的球数和限定的球数比较,如果大于或者等于限定的球数,说明在这个磁力下仍可以放置m个球,不是最小磁力里最大的。原创 2023-04-16 10:06:54 · 101 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表题解
尝试了一下,用递归写不出来,没有办法使用递归控制下标的移动。只能用循环了,应该还是可以使用递归的。原创 2023-04-03 01:02:17 · 85 阅读 · 0 评论 -
重排链表题解
怎么进行交换是个问题,这种一个接一个的,要把next从要交换位置以及后面的所有next都交换到新的节点中,再想办法删除掉改变后的序列里的最后一个节点。这一点使用c比较好理解,使用java就不好理解了,因为java中对应的数据结构,是用数组+指针来完成链表的设计的。最后一个数总是插入到原序列的中间,出口就是原序列的next是空的,递归体就是要进行交换。原创 2023-04-03 00:16:36 · 128 阅读 · 0 评论 -
两两交换链表中的节点解题思路
把握得不好,如果测试用例没有告诉我是什么错了,可能这道题拿不到分,运行会报错。所以写好代码后,测试全面一点!原创 2023-03-29 22:08:58 · 61 阅读 · 0 评论 -
剑指 Offer 64. 求1+2+…+n题解
采用自上而下的方式,从尾往前推,得出递归体是已知的n加上n的前一个数,特殊情况就是n=1时,结果就是1。这道题应该算简单题,说了不让用这不然用那儿,就是要让你用递归。原创 2023-03-29 22:07:39 · 65 阅读 · 0 评论 -
两数相加题解思路
这种题的边界条件非常耗时,对于不好处理的地方,应该要使用别的方法来代替处理才行。原创 2023-03-29 21:47:31 · 52 阅读 · 0 评论 -
爬楼梯的解题思路
递归需要看是否符合由大问题分解成重复的小问题,然后逐个求解小问题,最后合并答案形成大问题的解。其次,可以考虑是否可以分解成树形结构求解。再次,可以考虑是否可以自上而下地求解,自上而下不仅是从上到下地考虑,也可以倒过来看是否行得通。原创 2023-03-28 20:24:18 · 70 阅读 · 0 评论 -
路径总和的解题分析
要观察给的方法,给了总数,一直减就好了。另外要注意出口问题。其他的就是分解树的问题。初次做,我花太多时间在分解树的问题上了。原创 2023-03-28 00:32:56 · 53 阅读 · 0 评论 -
翻转二叉树,按层级查找
按层级来找二叉树的左右两个节点,出口是叶子节点的左右树都是null,找到最后一层的左右两个节点后,对调左右节点,返回节点,而后逐级网上找左右两个节点,再进行对调,再返回节点。原创 2023-03-28 00:33:20 · 53 阅读 · 0 评论