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 · 108 阅读 · 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 · 153 阅读 · 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 · 618 阅读 · 0 评论 -
力扣.236二叉树的最近公共祖先
题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”解题思路:自底向上,有点后序遍历的意思。(其实在自上而下递归之前,先筛选当前节点也能AC)1、后序遍历,左右根的遍历。2、首先确保本节点非null,或者与目标节点相同直接返回本节点。3、本节点非空,则判断左右子节点是否为null。这里分为4种情况:原创 2020-08-21 15:16:57 · 241 阅读 · 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 · 206 阅读 · 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 · 257 阅读 · 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 · 749 阅读 · 0 评论 -
合并有序数组java
题目:给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。(不使用额外空间)初始化 A 和 B 的元素数量分别为 m 和 n。输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出: [1,2,2,3,5,6]1、暴力法(能AC)直接将B中数据插入A中后部,然...原创 2020-03-08 17:33:24 · 361 阅读 · 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 · 1116 阅读 · 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 · 223 阅读 · 0 评论