思路: 快指针负责 “筛选” 有效元素(不等于 val 的元素),慢指针负责 “记录” 有效元素的位置。当快指针找到有效元素时,就把它 “搬运” 到慢指针的位...
使用前提: 二分查找仅适用于 「有序数据」(如升序或降序排列的数组、列表等),这是其能高效缩窄范围的基础。
在链表数据结构中,"环"是一个经典且考察频率极高的话题。这类问题通常分为两个阶段:
地址:https://leetcode.cn/problems/balanced-binary-tree/description/
题目:给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则...
💡 如何使用本专栏: 1⃣ 先独立思考:尝试自己写出第一版代码(哪怕很烂)。 2⃣ 对比解法:看看我的思路和你的差异,吸收优化技巧。 3⃣ 举一反三:每...
🚀 你好,欢迎来到《编程闯关记》! 这里是算法与数据结构的实战基地,也是你从“暴力解法”到“最优解”的进化场。
美团 | 大模型后台开发 (已认证)
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,...
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 O(nlog(n)),并且空间复杂度尽可能小。
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
cur.next = pre;相当于把pre地址赋值给了cur.next,那后续pre=cur的时候pre又变为新的地址,不会连带着改变cur.next吗?
暴力解法时间复杂度较高,会达到 O(n3),本题最优解法一定是滑动窗口,时间复杂度为O(n)
给定一个整数数组 cost ,其中 cost[i]是从楼梯第i 个台阶向上爬需要支付的费用,下标从0开始。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
如果 pushed 和 popped 是有效的栈操作序列,则经过所有的入栈和出栈操作之后,每个元素各入栈和出栈一次,栈为空。
这些键值对表示的是右括号到左括号的映射关系。 即,pairs被定义为一个从右括号),],}到对应左括号(,[,{的映射。 这样当我们遇到一个右括号时,可以...