LeetCode
LeetCode
Rookie1012
我喜欢听故事,这样就可以用一个人的人生过无数次
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
968.监控二叉树
// 贪心算法:自底向上,每三层一个摄像机,就能使得所用的摄像机最少。 // 对最后一个根节点做特判ans++ private int ans = 0; public int minCameraCover(TreeNode root) { if (root == null) { return 0; } if (dfs(root) == 2) { ans++; } return ans; } // 1---该节点没设置摄像,但被监控。 // 2---该节点.原创 2020-09-25 22:21:23 · 156 阅读 · 0 评论 -
491.递增子序列
第一种递归,for循环选择不同的数字(可以在选择途中,将符合要求的子序列加入结果集中) // 第一种dfs,耗时15ms,在每次取元素时就判断是否为所求。 public static void dfs1(int[] nums, int idx, List<Integer> list) { // 在每次取元素时就判断是否为所求。 if (list.size() >= 2) { // if (!res.contains(list)) { //res判重时间复杂度太高 //原创 2020-08-25 15:45:36 · 194 阅读 · 0 评论 -
力扣679.24点游戏
24点游戏 描述: 你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。 分析: 题目意思就是求24点,但是直接说很抽象,这里举[4, 1, 8, 7]这个例子。那就往两个数之间填运算符,假如填充的是4-1+87这样一个式子,显然87是先计算的。如果题目没有给我们括号,那么无论我们按什么顺序填符号都是8*7先算。现在给了我们括号也就是说如果我们取4,1两个数出来,可以加上括号(4-1)先运算。就是这个括号给我们递归创造了条件。 所以,我们就可以使用递归枚举原创 2020-08-22 15:20:11 · 675 阅读 · 0 评论 -
力扣.236二叉树的最近公共祖先
题目: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 解题思路: 自底向上,有点后序遍历的意思。(其实在自上而下递归之前,先筛选当前节点也能AC) 1、后序遍历,左右根的遍历。 2、首先确保本节点非null,或者与目标节点相同直接返回本节点。 3、本节点非空,则判断左右子节点是否为null。这里分为4种情况:原创 2020-08-21 15:16:57 · 308 阅读 · 0 评论 -
力扣529.扫雷游戏
题目条件: 1、如果一个地雷(‘M’)被挖出,游戏就结束了- 把它改为 ‘X’。 2、如果一个没有相邻地雷的空方块(‘E’)被挖出,修改它为(‘B’),并且所有和其相邻的未挖出方块都应该被递归地揭露。 3、如果一个至少与一个地雷相邻的空方块(‘E’)被挖出,修改它为数字(‘1’到’8’),表示相邻地雷的数量。 4、如果在此次点击中,若无更多方块可被揭露,则返回面板。 输入: [[‘E’, ‘E’, ‘E’, ‘E’, ‘E’], [‘E’, ‘E’, ‘M’, ‘E’, ‘E’], [‘E’, ‘E’, ‘原创 2020-08-20 15:23:06 · 265 阅读 · 0 评论 -
力扣133. 克隆图
该题克隆图类似二叉树的遍历,是从根节点遍历叶节点。 复制思路:是dfs遍历原节点node,建立HashMap<Node,Node>原节点到克隆节点的映射,然后根据原节点,new出新节点,建立节点之间关系。map是用来做递归的截止条件map.containsKey(node)就之间返回当前节点的clone节点。(就是图中绿色节点) DFS: //方法签名 public Node cloneGraph(Node node) { if (node == null) { return原创 2020-08-12 16:08:47 · 303 阅读 · 0 评论 -
硬币最小数量java
题目: 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 例如: 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: 11 = 5 + 5 + 1 输入: coins = [2], amount = 3 输出: -1 分析:可以使用贪心+回...原创 2020-03-08 21:31:27 · 807 阅读 · 0 评论 -
合并有序数组java
题目: 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。(不使用额外空间) 初始化 A 和 B 的元素数量分别为 m 和 n。 输入: A = [1,2,3,0,0,0], m = 3 B = [2,5,6], n = 3 输出: [1,2,2,3,5,6] 1、暴力法(能AC) 直接将B中数据插入A中后部,然...原创 2020-03-08 17:33:24 · 386 阅读 · 0 评论 -
求数组逆序对个数
题目描述 Description 有一个由N个实数构成的数组,如果一对元素A[i]和A[j]是倒序的,即i<j但是A[i]>A[j]则称它们是一个倒置,设计一个计算该数组中所有倒置数量的算法。要求算法复杂度为O(nlogn) Input 输入有多行,第一行整数T表示为测试用例个数,后面是T个测试用例,每一个用例包括两行,第一行的一个整数是元素个数,第二行为用空格隔开的数组值。 Outp...原创 2019-12-09 22:30:58 · 1169 阅读 · 0 评论 -
LeetCode两数相除java
这是力扣上的一道题,参考评论区。 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 示例 1: 输入: dividend = 10, divisor = 3 输出: 3 示例 2: 输入: dividend = 7, divisor = -3 输出: -2 ...原创 2019-12-09 22:22:03 · 262 阅读 · 0 评论
分享