
leetcode
Tim.
A ship in port is safe, but that's not what ships are built for.
展开
-
代码随想录-DAY⑩-二叉树——leetcode 144 | 94 | 145
递归,略迭代,用一个栈存放暂时没有写入到结果集的节点时间复杂度:O(n)空间复杂度:O(n)原创 2024-07-19 00:21:20 · 299 阅读 · 0 评论 -
代码随想录-DAY⑨-栈与队列——leetcode 20 | 150
遇到左括号压栈,遇到右括号弹栈,并对比是否配对。注意需要弹栈时栈空的话说明也不匹配。时间复杂度:O(n)空间复杂度:O(n)原创 2024-07-16 00:19:49 · 266 阅读 · 0 评论 -
代码随想录-DAY⑧-栈与队列——leetcode 232 | 225
将一个栈当作输入栈,另一个栈当作输出栈,每次 pop 或 peek 时,若输出栈为空,则将输入栈的全部数据依次弹出并压入输出栈。时间复杂度:O(1)空间复杂度:O(n)原创 2024-07-13 00:39:37 · 271 阅读 · 0 评论 -
代码随想录-DAY⑦-字符串——leetcode 344 | 541 | 151
没啥好说的,双指针头尾交换,相遇结束。时间复杂度:O(n)空间复杂度:O(1)原创 2024-07-10 23:54:17 · 409 阅读 · 0 评论 -
代码随想录-DAY⑥-哈希表——leetcode 383 | 454
首先统计 magazine 中每个英文字母 a 的次数 cnt[a],再遍历统计 ransomNote 中每个英文字母的次数,如果发现 ransomNote 中存在某个英文字母 c 的统计次数大于 magazine 中该字母统计次数 cnt[c],则此时我们直接返回 false。时间复杂度:O(n+m)空间复杂度:O(1)原创 2024-07-10 00:16:40 · 302 阅读 · 0 评论 -
代码随想录-DAY⑤-哈希表——leetcode 242 | 349 | 202
先遍历字符串1,记录每个字符的个数,然后遍历字符串2,挨个减去字符个数,出现小于零的个数说明字符总数不重合。时间复杂度:O(n)空间复杂度:O(1)原创 2024-07-08 23:26:39 · 732 阅读 · 1 评论 -
代码随想录-DAY④-链表——leetcode 24 | 19 | 142
此时,fast 指针已经走完了环的 n 圈,因此它走过的总距离为 a+n(b+c)+b=a+(n+1)b+nc。有了 a=c+(n−1)(b+c) 的等量关系,我们会发现:从相遇点到入环点的距离加上 n−1 圈的环长,恰好等于从链表头部到入环点的距离。因此,我们有 a+(n+1)b+nc=2(a+b)⟹a=c+(n−1)(b+c)根据题意,任意时刻,fast 指针走过的距离都为 slow 指针的 2 倍。否则,通过更新节点的指针关系交换 pre 后面的两个节点,最后,返回新的链表的头节点。原创 2024-07-08 00:13:34 · 407 阅读 · 0 评论 -
代码随想录-DAY④-相交链表经典三解——leetcode 160
即最终两个指针一定走了一样的步数(n+m),如果发现已存在在哈希集合中的,说明相交,让指向较长链表的指针向后挪动长度差的步数,将链表 A 中的每个节点都存入哈希集合,走到头(一定同时)都不相等说明不相交。遍历链表 B 并判断每一个节点,两个指向链表的指针同时向后移动,遍历并计算两个链表的长度差,如果遍历结束,说明不相交。然后两个指针同时向后移动,时间复杂度:O(m+n)时间复杂度:O(m+n)都继而指向另一个链表头,时间复杂度:O(m+n)空间复杂度:O(m)空间复杂度:O(1)空间复杂度:O(1)原创 2024-07-06 23:55:30 · 351 阅读 · 0 评论 -
代码随想录-DAY③-链表——leetcode 203 | 707 | 206
设置一个虚拟头结点,这样所有节点就都可以按照统一的方式进行移除。如果下一个节点的值等于 val,让节点 next 指针直接指向下下一个节点。不要忘记清理节点内存。时间复杂度: O(n)空间复杂度: O(1)原创 2024-07-05 23:57:39 · 342 阅读 · 0 评论 -
代码随想录-DAY②-数组——leetcode 977 | 209
使用两个指针分别指向位置 0 和 n−1,每次比较两个指针对应的数,选择较大的那个逆序放入答案并移动指针。这种方法无需处理某一指针移动至边界的情况。时间复杂度:O(n)空间复杂度:O(1)原创 2024-07-04 22:46:12 · 320 阅读 · 0 评论 -
代码随想录-DAY①-数组——leetcode 704 | 27
定义查找的范围 [left,right],初始查找范围是整个数组。每次取查找范围的中点 mid,比较 nums[mid] 和 target 的大小,如果相等则 mid 即为要寻找的下标,如果不相等则根据 nums[mid] 和 target 的大小关系将查找范围缩小一半。时间复杂度: O(logn)原创 2024-07-02 22:10:12 · 361 阅读 · 0 评论