leetcode
badbeat
这个作者很懒,什么都没留下…
展开
-
112. 路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 true, 因为存在目标和为...原创 2020-10-11 11:13:12 · 75 阅读 · 0 评论 -
递增顺序查找树
原题:https://leetcode-cn.com/problems/increasing-order-search-tree/给你一个树,请你 按中序遍历 重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。示例 :输入:[5,3,6,2,4,null,8,1,null,null,null,7,9] 5 / \ 3 6 / \ \ 2 4 8/ / \1 ...原创 2020-10-01 20:04:29 · 200 阅读 · 0 评论 -
二叉树的层序遍历,直接打印+分层打印,递归和非递归法
队列的性质:先进先出。使用队列,将层序遍历结果保存到数组中:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public int[] levelOrder(T原创 2020-09-30 10:48:48 · 601 阅读 · 0 评论 -
平衡二叉树——“递归三部曲”
最近按照tag做了几道字符串、数组、排序的easy题,确实比较easy就没有发出来。今天尝试二叉树tag果然第一题就卡住了。实在没有思路,看评论区发现一篇好博客!——递归三部曲。 原博客链接:https://lyl0724.github.io/2020/01/25/1/题目:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。/** * Definition for a binary tree n.原创 2020-09-29 15:08:32 · 176 阅读 · 0 评论 -
所有奇数长度子数组的和
题目链接:https://leetcode-cn.com/problems/sum-of-all-odd-length-subarrays/给你一个正整数数组arr,请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。请你返回 arr中 所有奇数长度子数组的和 。示例 1:输入:arr = [1,4,2,5,3]输出:58解释:所有奇数长度子数组和它们的和为:[1] = 1[4] = 4[2] = 2[5] = 5[3] = 3[1,...原创 2020-09-21 18:24:15 · 2763 阅读 · 0 评论 -
有序数组的平方——指针的理解
题目链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array/给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例 1:输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]示例 2:输入:[-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= A.length <= 10000-10000 <= A..原创 2020-09-20 22:08:34 · 136 阅读 · 0 评论 -
2020-09-19 不好理解的投票算法
题目链接:https://leetcode-cn.com/problems/find-majority-element-lcci/solution/数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5示例 2:输入:[3,2]输出:-1示例 3:输入:[2,2,1,1,1,2,2]输出:2说明:你有办法在时间复杂度为 O(N),空间复杂度为 O(1) 内...原创 2020-09-19 23:15:41 · 94 阅读 · 0 评论 -
数组——转置矩阵
题目链接:https://leetcode-cn.com/problems/transpose-matrix/867. 转置矩阵难度简单104给定一个矩阵A,返回A的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]...原创 2020-09-18 23:42:47 · 393 阅读 · 0 评论 -
使用最小花费爬楼梯——初识DP
题目链接:https://leetcode-cn.com/problems/min-cost-climbing-stairs/数组的每个索引作为一个阶梯,第i个阶梯对应着一个非负数的体力花费值cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例1:输入: cost = [10, 15, 20]输出: 15解释:...原创 2020-08-31 17:56:21 · 175 阅读 · 0 评论 -
733. 图像渲染——初识DFS和BFS
题目链接:https://leetcode-cn.com/problems/flood-fill/有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。给你一个坐标(sr, sc)表示图像渲染开始的像素值(行 ,列)和一个新的颜色值newColor,让你重新上色这幅图像。为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相...原创 2020-08-26 09:51:01 · 133 阅读 · 0 评论 -
词典中最长的单词——注意边界条件
题目链接:https://leetcode-cn.com/problems/longest-word-in-dictionary/给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。示例 1:输入:words = ["w","wo","wor","worl", "world"]输出:"world"解释:单词"world"可..原创 2020-08-24 17:35:02 · 141 阅读 · 0 评论 -
数据流中的第K大元素——优先队列
题目链接:https://leetcode-cn.com/problems/kth-largest-element-in-a-stream/设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。你的KthLargest类需要一个同时接收整数k 和整数数组nums的构造器,它包含数据流中的初始元素。每次调用KthLargest.add,返回当前数据流中第K大的元素。示例:int k = 3;int[] arr = [4,5,8,2];K...原创 2020-08-20 15:36:34 · 252 阅读 · 0 评论 -
二叉搜索树中的搜索
题目链接:https://leetcode-cn.com/problems/search-in-a-binary-search-tree/给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \ 1 3和值: 2你应该返回如下子树: 2 / \ ...原创 2020-08-19 17:05:52 · 89 阅读 · 0 评论 -
计数二进制子串
题目链接:https://leetcode-cn.com/problems/count-binary-substrings/给定一个字符串s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例 1 :输入: "00110011"输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它.原创 2020-08-18 18:23:44 · 156 阅读 · 0 评论 -
棒球比赛——栈!
题目链接:https://leetcode-cn.com/problems/baseball-game/你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。2. "+"(一轮的得分):表示本轮获得的得分是前两轮有效回合得分的总和。3. "D"(一轮的得分):表示本轮获得的得分是前一轮有效回合得分的两倍。4. "C"(一个操作,这不是一个回合的分数):表示您获得的最后一个有效回合的分数是无效的,应该被移除。...原创 2020-08-17 17:21:41 · 246 阅读 · 0 评论 -
修剪二叉搜索树
题目链接:https://leetcode-cn.com/problems/trim-a-binary-search-tree/669. 修剪二叉搜索树难度简单256给定一个二叉搜索树,同时给定最小边界L和最大边界R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。示例 1:输入: 1 / \ 0 2 L = 1 R = 2输出: 1..原创 2020-08-13 14:03:55 · 158 阅读 · 0 评论 -
两数之和 IV - 输入 BST
题目链接:https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst/给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:输入: 5 / \ 3 6/ \ \2 4 7Target = 9输出: True案例 2:输入: 5 / \ 3 6/ \ \2 4 7Tar...原创 2020-08-12 18:01:04 · 89 阅读 · 0 评论 -
二叉树的层平均值
题目链接:https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例 1:输入: 3 / \ 9 20 / \ 15 7输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。提示:节点值的范围在32位有...原创 2020-08-11 18:24:55 · 158 阅读 · 0 评论 -
628. 三个数的最大乘积
题目链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers/给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。##########原创 2020-08-10 11:24:38 · 132 阅读 · 0 评论 -
598. 范围求和 II——思路很关键!
来源:https://leetcode-cn.com/problems/range-addition-ii/给定一个初始元素全部为0,大小为 m*n 的矩阵M以及在M上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数a 和 b 的数组表示,含义是将所有符合0 <= i < a 以及 0 <= j < b 的元素M[i][j]的值都增加 1。在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。示例 1:输入:...原创 2020-08-06 18:23:49 · 116 阅读 · 0 评论 -
迭代法搞定N叉树的前序遍历和后序遍历
如题,N叉树的前序遍历和后续遍历。leetcode上两道题挨着,让用迭代法。我先给一下递归的代码:前序:/*// Definition for a Node.class Node { public int val; public List<Node> children; public Node() {} public Node(int _val) { val = _val; } public Node(int _原创 2020-08-05 10:17:09 · 295 阅读 · 0 评论 -
581. 最短无序连续子数组——以其求思之深而无不在也!
题目链接:https://leetcode-cn.com/problems/shortest-unsorted-continuous-subarray/给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。说明 :输入的数原创 2020-08-04 09:49:07 · 120 阅读 · 0 评论 -
563. 二叉树的坡度
题目链接:https://leetcode-cn.com/problems/binary-tree-tilt/给定一个二叉树,计算整个树的坡度。一个树的节点的坡度定义即为,该节点左子树的结点之和和右子树结点之和的差的绝对值。空结点的的坡度是0。整个树的坡度就是其所有节点的坡度之和。示例:输入: 1 / \ 2 3输出:1解释:结点 2 的坡度: 0结点 3 的坡度: 0结点 1 的坡度: |2-3| = 1树的坡度 : ...原创 2020-08-03 15:08:26 · 114 阅读 · 0 评论 -
543. 二叉树的直径
题目链接:https://leetcode-cn.com/problems/diameter-of-binary-tree/给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回3, 它的长度是路径 [4,2,1,3] 或者[5,2,1,3]。..原创 2020-07-30 10:57:43 · 82 阅读 · 0 评论 -
530. 二叉搜索树的最小绝对差
题目链接:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/530. 二叉搜索树的最小绝对差难度简单123给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例:输入: 1 \ 3 / 2输出:1解释:最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。#################原创 2020-07-29 14:01:58 · 144 阅读 · 0 评论 -
506. 相对名次
题目链接:https://leetcode-cn.com/problems/relative-ranks/给出N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌。前三名运动员将会被分别授予 “金牌”,“银牌” 和“ 铜牌”("Gold Medal", "Silver Medal", "Bronze Medal")。(注:分数越高的选手,排名越靠前。)示例 1:输入: [5, 4, 3, 2, 1]输出: ["Gold Medal", "Silver Medal", "Bronz.原创 2020-07-28 18:43:14 · 102 阅读 · 0 评论 -
501. 二叉搜索树中的众数
题目链接:https://leetcode-cn.com/problems/find-mode-in-binary-search-tree/给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义: 结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当前结点的值 左子树和右子树都是二叉搜索树 例如:给定 BST[1,null,2,2],1\2/2返回[2].原创 2020-07-27 13:39:48 · 68 阅读 · 1 评论 -
492. 构造矩形
题目链接:https://leetcode-cn.com/problems/construct-the-rectangle/作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的。 现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。要求:1. 你设计的矩形页面必须等于给定的目标面积。2. 宽度 W 不应大于长度 L,换言之,要求 L >= W 。3. 长度 L 和宽度 W 之间的差距应当尽可能小。你需要按顺序输出你设计的页原创 2020-07-24 17:56:24 · 101 阅读 · 0 评论 -
475. 供暖器
题目链接:https://leetcode-cn.com/problems/heaters/冬季已经来临。你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。现在,给出位于一条水平线上的房屋和供暖器的位置,找到可以覆盖所有房屋的最小加热半径。所以,你的输入将会是房屋和供暖器的位置。你将输出供暖器的最小加热半径。说明:给出的房屋和供暖器的数目是非负数且不会超过 25000。给出的房屋和供暖器的位置均是非负数且不会超过10^9。只要房屋位于供暖器的半径内(包括在边缘上),它就可以得.原创 2020-07-23 09:28:54 · 147 阅读 · 0 评论 -
463. 岛屿的周长
题目来源:https://leetcode-cn.com/problems/island-perimeter/给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地0 表示水域。网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。示.原创 2020-07-22 11:04:34 · 91 阅读 · 0 评论 -
448. 找到所有数组中消失的数字——list删除元素的方法+原地修改
题目来源:https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array/给定一个范围在1 ≤ a[i] ≤ n (n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,...原创 2020-07-21 10:38:00 · 120 阅读 · 0 评论 -
441. 排列硬币
题目链接:https://leetcode-cn.com/problems/arranging-coins/你总共有n枚硬币,你需要将它们摆成一个阶梯形状,第k行就必须正好有k枚硬币。给定一个数字n,找出可形成完整阶梯行的总行数。n是一个非负整数,并且在32位有符号整型的范围内。示例 1:n = 5硬币可排列成以下几行:¤¤ ¤¤ ¤因为第三行不完整,所以返回2.示例 2:n = 8硬币可排列成以下几行:¤¤ ¤¤ ¤ ¤¤ ¤因为第四...原创 2020-07-20 15:06:44 · 146 阅读 · 0 评论 -
404. 左叶子之和
题目来源:https://leetcode-cn.com/problems/sum-of-left-leaves/计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24class Solution { public int sumOfLeftLeaves(TreeNode root) { if(root==null){ ...原创 2020-07-16 13:51:13 · 69 阅读 · 0 评论 -
371. 两整数之和a+b——神奇的位运算
题目来源:https://leetcode-cn.com/problems/sum-of-two-integers/不使用运算符+ 和-,计算两整数a、b之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1直接上答案吧,我勉强能理解:a^b是每位相加,但是不算进位。(a&b)<<1是进位值,这两个加起来就是结果了,循环到进位值为0时,不算进位值为结果。c...原创 2020-07-15 18:18:36 · 142 阅读 · 0 评论 -
383. 赎金信——似曾相识的一道题
题目来源:https://leetcode-cn.com/problems/ransom-note/给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)注意:你可以假设两个字符串均只.原创 2020-07-14 18:07:47 · 78 阅读 · 0 评论 -
349. 两个数组的交集——集合的交集、并集和差集+集合的遍历
题目来源:https://leetcode-cn.com/problems/intersection-of-two-arrays/给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。#############..原创 2020-07-13 11:35:08 · 948 阅读 · 0 评论 -
力扣292Nim——观察法
题目来源:https://leetcode-cn.com/problems/nim-game你和你的朋友,两个人一起玩Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;因为无论你拿走 1 块、2 块 还是 3 块石头,最...原创 2020-07-10 11:49:32 · 113 阅读 · 0 评论 -
力扣274. H 指数——思路很重要!
题目链接:https://leetcode-cn.com/problems/h-index/一道中等难度的题,用了十几分钟时间,一次通过,感觉自己的思路还是可以的!激动ing!从6月1号开始做题,到昨天正好做了50道题了,绝大多数是简单难度,在做题的过程中,发现一个大问题是基础知识的欠缺,java最基础的map、list、set操作、数组、字符串等等,这些东西就是工具。当看到一道题的时候,如果能有点思路,就利用这些工具,把思路“翻译”成代码就ok了。需要学习的还有很多,做题过程中也留下很多坑,比如树原创 2020-07-08 10:47:21 · 229 阅读 · 0 评论 -
力扣268. 缺失数字——利用高斯求和公式!
题目链接:https://leetcode-cn.com/problems/missing-number/给定一个包含 0, 1, 2, ..., n中n个数的序列,找出 0 .. n中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?***************************************...原创 2020-07-08 10:17:23 · 228 阅读 · 0 评论 -
234回文链表——ArrayList中的get()自动装箱
题目来自力扣官网:https://leetcode-cn.com/problems/palindrome-linked-list/请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?——————分割线——————我还是思考了这个进阶的,On所以只能遍历一遍,O1不能开额外的链表。感觉这道题特别像之前博客中写.原创 2020-07-07 10:13:52 · 272 阅读 · 0 评论