- 博客(16)
- 收藏
- 关注
原创 LeetCode小白刷题0013-热题100之回文链表(简单)
执行第二步的最佳方法取决于使用的语言。在 Python 中,很容易构造一个列表的反向副本,也很容易比较两个列表。而在其他语言中,就没有那么简单。正确的比较方式是:node_1.val == node_2.val,而 node_1 == node_2 是错误的。在编码的过程中,注意我们比较的是节点值的大小,而不是节点本身。先复制到数组的原因是,链表更适于增删,而数组更适于改查。,请你判断该链表是否为回文链表。第一步,复制到数组,第二步,判断是否回文。时间复杂度:O(n)、空间复杂度:O(n)
2024-03-04 19:53:53
333
原创 LeetCode小白刷题0012-热题100之反转链表(简单)
在遍历链表时,将当前节点的 next\textit{next}next 指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。其中,第三个指针(蓝色的)不必用单独的变量来记录,只需在每次指针反转前暂存一下即可。注意两指针 prev、curr 初始值分别为 null、head.,请你反转链表,并返回反转后的链表。
2024-03-01 01:24:12
330
原创 《java编程思想》读书笔记-1
1. 程序可以通过添加新类型的对象使自身适用于某个特定问题。2. 万物皆可对象:对象可存储数据、可在自身执行操作; 程序是对象的集合,他们通过发送消息(方法调用请求)来告知彼此所要做的; 每个对象都有自己的由其他对象所构成的存储,即 可以通过创建包含现有对象的包的方式来创 建新类型的对象; 每个对象都拥有其类型; 某一特定类型的所有对象都可以接收同样的消息(有同样的方法)3. 对象具有状态(由对象内部数据反映)、行为(方法)、标识(每一个对象在内存中都有唯一的地址)。1.
2024-02-29 16:52:35
815
原创 LeetCode小白刷题0011-热题100之相交链表(简单)
如果两链表没有交点,两指针一定同时变为null,无论有无交点,当两指针第一次相等时,即可作出判断。关于为什么在遍历链表 headB 时 “如果当前节点在哈希集合中,则后面的节点都在哈希集合中,即从当前节点开始的所有节点都在两个链表的相交部分”:由。创建两个指针 pA 和 pB,初始时分别指向两个链表的头节点 headA 和 headB,然后将两个指针依次遍历两个链表的每个节点。其中 m 和 n 是分别是链表 headA 和 headB 的长度。原理:a+c+b = b+c+a 、m+n = n+m。
2024-02-29 08:50:01
961
原创 LeetCode小白刷题0010-热题100之合并区间(中等)
正确性(反证法):试想,区间按左端点排序后,有两个不相邻的区间(假设第 k 和 第 k+2 个区间)可合并,则一定有第 k 个区间的右端点大于或等于第 k+2 个区间的左端点,而 第 k+1 个区间的左端点是一定小于或等于第 k+2 个区间的左端点的,则一定有:第 k 个区间的左端点大于或等于第 k+1 个区间的左端点,那么第 k 个区间与第 k+1 个区间一定是能合并的,k 与 k+y 中间的若干区间与第 k 个区间都是能合并的。一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。
2024-02-28 20:19:35
343
原创 LeetCode小白刷题0009-热题100之最大子数组和(中等)
其中 leftSum 是左子数组的最大子数组和, rightSum 是右子数组的最大子数组和, midSum 是从 m 分别向左右两边扩展得到的最大和子数组 mlSum 与 mrSum 的和。因为当我们把一个数组以 m 为界分隔时,该数组的最大和子数组只可能出现在三个位置:左子数组、右子数组、横跨 m 的子数组。如果子数组包含空数组,极端情况下,例如当数组全为负数时,空子数组和最大,为0。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。是数组中的一个连续部分。
2024-02-28 19:29:57
336
原创 LeetCode小白刷题0008-热题100之找到字符串中所有字母异位词(中等)
先初始化pCount和sCount,并对起点0做判断,之后窗口后移时只需修改首尾即可,起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。初始化窗口与移动窗口两部分分离,使得移动变得简单,体现了对。的子串,返回这些子串的起始索引。不考虑答案输出的顺序。指由相同字母重排列形成的字符串(包括相同的字符串)。
2024-02-28 18:22:14
334
原创 LeetCode小白刷题0007-热题100之无重复字符的最长子串(中等)
因为:假设我们已经枚举得出 以第 k 个字符作为起点的无重复子串的终点是第 R(k) 个字符, 当我们枚举以第 k+1 个字符作为起点的无重复子串时,可以确定的是 第 k+1 到第 Rk 个字符一定是无重复的,那么 R(k+1)一定大于 R(k)。在每一步的操作中,我们会将左指针(第一层循环变量)向右移动一格(加1),表示 我们开始枚举下一个字符作为起始位置,然后我们可以不断地向右移动(加1)右指针(第二层循环变量),但。在移动结束后,这个子串就对应着 以左指针开始的,不包含重复字符的最长子串。
2024-02-28 14:01:19
406
原创 LeetCode小白刷题0006-热题100之三数之和(中等)
while括号中用 >target 而不是 =target : 如果用 =,在左右指针重合时只能判断对于当前这个 b没有对应的 c ,没法判断--->//如果指针重合,随着 b 后续的增加,就不会有满足 a+b+c=0 并且 b
2024-02-28 10:51:52
809
原创 LeetCode小白刷题0005-热题100之盛最多水的容器(中等)
左右指针代表容器的边界,在初始时,左右指针分别指向数组的左右两端,每次先计算当前容器的盛水量然后。决定的,两个影响因素,只有知道了所有组合的容纳水量才能确定谁是最大的,但在计算过程中,)会变小,整体肯定变小,这时还不如取它的前一个状态,即 这一状态组合是可以直接跳过的;)仍然会变小,但整体可能变大,这时不能直接跳过,需明确计算出来;,不确定性大大增加,不能跳过某些组合,还可能造成遗漏。一开始就想暴力枚举,一点做题的基本素质都没有,是我了。两个指针指向的数字中较小值∗指针之间的距离。)可能变大,第二部分(
2024-02-28 08:52:12
371
原创 LeetCode小白刷题0004-热题100之移动零(简单)
数组最终形态是一串非0数字后跟一串0,且非0数字串的相对位置不变。为达目标,算法应该从前往后依次将非0数字移到前面合适的位置(紧接在“原数组中前面紧邻的非0数字”之后。由于要求O(N)的时间,只能是扫描一次,所以“紧接原数组中前面紧邻的非0数字之后”即“已经移动好的非0串的最后一位的后一位”),于是需要明确 “已经移动好的非0串的最后一位的后一位”在哪、当前需要确认位置的数字是谁,基于这两个点,考虑采用。左指针(已经移动好的非0串的最后一位的后一位。,这时的左右指针满足其各自应有的性质。
2024-02-28 08:08:49
345
原创 java集合框架常用知识总结
存储的元素是单个的存储的元素是键值对这两个被称作根接口。。再往下是一些抽象类,最后是具体实现类,常用的有、LinkedHashMap 等等。
2024-02-27 23:29:23
817
原创 LeetCode小白刷题0003-热题100之最长连续序列(中等)
但仔细分析这个过程,我们会发现其中执行了很多不必要的枚举,如果已知有一个 x,x+1,x+2,⋯ ,x+y的连续序列,而我们却重新从 x+1,x+2 或者是 x+y处开始尝试匹配,那么得到的结果肯定不会优于枚举 x为起点的答案,因此我们在外层循环的时候碰到这种情况跳过即可。是否存在,假设最长匹配到了 x+y,那么以 x 为起点的最长连续序列即为 x,x+1,x+2,⋯ ,x+y,其长度为 y+1,我们不断枚举并更新答案即可。空间复杂度:O(n)。哈希表存储数组中所有的数需要 O(n) 的空间。
2024-02-27 21:22:40
524
原创 LeetCode小白刷题0002-热题100之字母异位词分组(中等)
两个字母之间没有区分,而数字10和数字1、0之间的牵连导致某种巧合的出现。,导致分组错误,因此该种构成键的方式有漏洞,只需在构成键时。字符串转为字符数组后可直接Arrays.sort排序。2.想不到第二种方法,经提示也会有漏洞。错误之处在于构成键sb时,这种构成方式。加上每个字母作为字母个数的间隔。测试用例通过123/126,不同测试用例形成的键是相同的。
2024-02-27 20:45:39
325
原创 LeetCode小白刷题0001-热题100之两数之和(简单)
因为 位于该元素之前的元素,已经与其本身后面所有元素比对过了,自然也与当前元素比对过了。,只会对数组中每个元素依次遍历除它本身以外的其余元素,看二者是否符合“和为target”的条件,---避免空指针异常:如果一个方法期望接收一个数组作为参数,但传入的是。---方便遍历:虽然遍历一个空数组不会执行任何循环体,但使用。---代码一致性:有时候在代码中需要处理空数组的情况,使用。创建一个长度为0的数组可以方便地进行遍历操作,而且不会引发任何异常。遍历一个空数组会在循环中不执行任何操作,因为数组中没有元素。
2024-02-27 19:02:25
366
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人