随笔分类 - LeetCode
摘要:给出一个区间的集合,请合并所有重叠的区间。 示例 1: 示例 2: https://leetcode cn.com/problems/merge intervals/ 简单合并 首先要做的就是给区间集排序,由于我们要排序的是个结构体,所以我们要定义自己的 comparator,才能用 sort 来排
阅读全文
摘要:请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回 1 示例 1: 输入: 示例 2: 限制: 1 queue; deq
阅读全文
摘要:给定一个整数数组 ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。 示例 1: 示例 2: https://leetcode cn.com/problems/maximum product subarray/ 动态规划 其实这道题最直接的方法就是用 DP 来做,而且要用两个 dp 数组
阅读全文
摘要:输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1: 示例 2: 限制: 1 findContinuousSequence(int target) { int i = 1; // 滑
阅读全文
摘要:给定一个二叉树, "原地" 将它展开为链表。 例如,给定二叉树 将其展开为: https://leetcode cn.com/problems/flatten binary tree to linked list/ 递归 先利用 DFS 的思路找到最左子节点,然后回到其父节点,把其父节点和右子节点断
阅读全文
摘要:排排坐,分糖果。 我们买了一些糖果 ,打算把它们分给排好队的 个小朋友。 给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 颗糖果。 然后,我们再回到队伍的起点,给第一个小朋友 颗糖果,第二个小朋友 颗,依此类推,直到给最后一个小朋友 颗糖果。 重复上述过程(每次都比
阅读全文
摘要:在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动
阅读全文
摘要:"994. 腐烂的橘子" 在给定的网格中,每个单元格可以有以下三个值之一: 值 代表空单元格; 值 代表新鲜橘子; 值 代表腐烂的橘子。 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。 返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 。 示例 1:
阅读全文
摘要:给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。 初始化 A 和 B 的元素数量分别为 m 和 n 。 示例: 逆向双指针 c++ java
阅读全文
摘要:给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 示例 2: 递归 利用其本身性质来做,初始化时带入系统最大值和最小值,在递
阅读全文
摘要:给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 示例 2: 动态规划 这里可以用动态规划 Dynamic Programming 来解,维护一个一维数组 dp,其中 dp[i] 表示达到i位置时剩余
阅读全文
摘要:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明: 1 ≤ m ≤ n ≤ 链表长度。 示例: https://leetcode cn.com/problems/reverse linked list ii/ 迭代 1 2 3 4 5 NULL 1 3 2 4 5 NULL 1 4 3
阅读全文
摘要:反转一个单链表。 示例: 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? https://leetcode cn.com/problems/reverse linked list/ 迭代 思路是在原链表之前建立一个空的newHead,因为首节点会变,然后从head开始,将之后的一个
阅读全文
摘要:使用队列实现栈的下列操作: push(x) 元素 x 入栈 pop() 移除栈顶元素 top() 获取栈顶元素 empty() 返回栈是否为空 注意: 你只能使用队列的基本操作 也就是 , , , 和 这些操作是合法的。 你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队
阅读全文
摘要:75. 颜色分类 给定一个包含红色、白色和蓝色,一共 n 个元素的数组, "原地" 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意: 不能使用代码库中的排序函数来解决这道题。 示例: 进阶: 一个直观
阅读全文
摘要:给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 示例 2: 说明: 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。 你的算法的时间复杂度 必须 优于 O( n log n ) , n 是数组的大小。 哈希表加堆排序 这道题给了我们一个数组,让
阅读全文
摘要:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 来源:力扣(LeetCode) 链接:https://leetcode cn.com/problems/single nu
阅读全文
摘要:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 示例 2: 来源:力扣(LeetCode) 链接:https://leetcode cn.c
阅读全文
摘要:给定一个 无重复元素 的数组 和一个目标数 ,找出 中所有可以使数字和为 的组合。 中的数字可以无限制重复被选取。 说明: 所有数字(包括 )都是正整数。 解集不能包含重复的组合。 示例 1: 示例 2: 递归函数 这里我们新加入三个变量,start 记录当前的递归到的下标,out 为一个解,res
阅读全文
摘要:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) 将元素 x 推入栈中。 pop() 删除栈顶的元素。 top() 获取栈顶元素。 getMin() 检索栈中的最小元素。 示例: 辅助栈 使用两个栈来实现,一个栈来按顺序存储 push 进来的数据,另
阅读全文

浙公网安备 33010602011771号