
LeetCode
文章平均质量分 62
LeetCode算法题理解和分析
WukongGo
这个作者很懒,什么都没留下…
展开
-
有多少小于当前数字的数字java实现
1365. 有多少小于当前数字的数字https://leetcode-cn.com/problems/how-many-numbers-are-smaller-than-the-current-number/给你一个数组nums,对于其中每个元素nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个nums[i]你必须计算出有效的j的数量,其中j满足j != i且nums[j] < nums[i]。以数组形式返回答案。示例 1:...原创 2020-10-26 21:44:30 · 516 阅读 · 0 评论 -
数组中的最长山脉java实现
数组中的最长山脉https://leetcode-cn.com/problems/longest-mountain-in-array/我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”:B.length >= 3存在 0 < i< B.length - 1 使得 B[0] < B[1] < ... B[i-1] < B[i] > B[i+1] > ... > B[B.length - 1](注意:B 可以是 A 的任意子.原创 2020-10-25 15:47:18 · 500 阅读 · 2 评论 -
长按键入java实现
长按键入https://leetcode-cn.com/problems/long-pressed-name/你的朋友正在使用键盘输入他的名字name。偶尔,在键入字符c时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回True。示例 1:输入:name = "alex", typed = "aaleex"输出:true解释:'alex' 中的 'a' 和 '...原创 2020-10-21 14:22:25 · 474 阅读 · 0 评论 -
二叉搜索树的最近公共祖先java实现
二叉搜索树的最近公共祖先https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树:root =[6,2,8,0,4...原创 2020-09-27 10:09:49 · 248 阅读 · 0 评论 -
二叉搜索树中的众数java实现
二叉搜索树中的众数https://leetcode-cn.com/problems/find-mode-in-binary-search-tree/给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2], 1 \ 2 / 2...原创 2020-09-24 16:42:37 · 168 阅读 · 0 评论 -
删除链表的倒数第N个节点java实现
删除链表的倒数第N个节点https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5./** * Definition for singly-linked list. * pub..原创 2020-09-19 16:50:38 · 537 阅读 · 2 评论 -
左叶子之和java实现
左叶子之和https://leetcode-cn.com/problems/sum-of-left-leaves/计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24/** * Definition for a binary tree node. * public class TreeNode { * int val; * Tre...原创 2020-09-19 10:05:17 · 254 阅读 · 0 评论 -
组合java实现
组合https://leetcode-cn.com/problems/combinations/给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]class Solution { public List<List<Integer>> combine(int n, in...原创 2020-09-08 09:23:44 · 186 阅读 · 0 评论 -
前 K 个高频元素java实现
前 K 个高频元素https://leetcode-cn.com/problems/top-k-frequent-elements/给定一个非空的整数数组,返回其中出现频率前k高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的k总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(...原创 2020-09-07 10:18:32 · 543 阅读 · 2 评论 -
第k个排列java实现
第k个排列https://leetcode-cn.com/problems/permutation-sequence/给出集合[1,2,3,…,n],其所有元素共有n! 种排列。按大小顺序列出所有排列情况,并一一标记,当n = 3 时, 所有排列如下:"123""132""213""231""312""321"给定n 和k,返回第k个排列。说明:给定 n的范围是 [1, 9]。给定 k的范围是[1, n!]。示例1:输入: n = 3, k ...原创 2020-09-05 09:34:23 · 754 阅读 · 0 评论 -
环形链表java实现
环形链表https://leetcode-cn.com/problems/linked-list-cycle-ii/给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to nod...原创 2020-08-31 19:58:24 · 462 阅读 · 0 评论 -
重复的子字符串java实现
重复的子字符串https://leetcode-cn.com/problems/repeated-substring-pattern/给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。示例 2:输入: "aba"输出: False示例 3:输入: "abcabcabcabc"输出: True解释:原创 2020-08-24 09:16:52 · 410 阅读 · 0 评论 -
24点游戏java实现
24 点游戏https://leetcode-cn.com/problems/24-game/你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过*,/,+,-,(,)的运算得到 24。示例 1:输入: [4, 1, 8, 7]输出: True解释: (8-4) * (7-1) = 24示例 2:输入: [1, 2, 1, 2]输出: False注意:除法运算符/表示实数除法,而不是整数除法。例如 4 / (1 - 2/3) = 12 。每个运算符对两个数...原创 2020-08-22 10:15:39 · 374 阅读 · 0 评论 -
二叉树镜像翻转java实现
二叉树的镜像https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入:4/ \2 7/ \ / \1 3 6 9镜像输出:4/ \7 2/ \ / \9 6 31示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,...原创 2020-08-21 10:02:47 · 652 阅读 · 0 评论 -
二叉树的最小深度java实现
二叉树的最小深度https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2./** * Definition for...原创 2020-08-21 09:47:51 · 434 阅读 · 0 评论 -
扫雷游戏java实现
扫雷游戏https://leetcode-cn.com/problems/minesweeper/让我们一起来玩扫雷游戏!给定一个代表游戏板的二维字符矩阵。'M'代表一个未挖出的地雷,'E'代表一个未挖出的空方块,'B'代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字('1' 到 '8')表示有多少地雷与这块已挖出的方块相邻,'X'则表示一个已挖出的地雷。现在给出在所有未挖出的方块中('M'或者'E')的下一个点击位置(行和列索引),根据以下规则,返回相...原创 2020-08-20 11:36:07 · 516 阅读 · 0 评论 -
有序链表转换二叉搜索树java实现
有序链表转换二叉搜索树https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree/给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度.原创 2020-08-18 10:50:02 · 335 阅读 · 0 评论 -
从前序与中序遍历序列构造二叉树java实现
从前序与中序遍历序列构造二叉树https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 ...原创 2020-08-17 10:51:16 · 632 阅读 · 1 评论 -
平衡二叉树java实现
平衡二叉树https://leetcode-cn.com/problems/balanced-binary-tree/给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null...原创 2020-08-17 10:22:43 · 214 阅读 · 0 评论 -
字符串相乘java实现
字符串相乘https://leetcode-cn.com/problems/multiply-strings/给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1和num2的长度小于110。num1 和num2 ...原创 2020-08-14 10:34:53 · 1135 阅读 · 0 评论 -
克隆图java实现
克隆图https://leetcode-cn.com/problems/clone-graph/给你无向连通图中一个节点的引用,请你返回该图的深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node { public int val; public List<Node> neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val ...原创 2020-08-12 10:35:56 · 221 阅读 · 0 评论 -
被围绕的区域java实现
被围绕的区域https://leetcode-cn.com/problems/surrounded-regions/给定一个二维的矩阵,包含'X'和'O'(字母 O)。找到所有被 'X' 围绕的区域,并将这些区域里所有的'O' 用 'X' 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的'O'都...原创 2020-08-11 17:12:44 · 251 阅读 · 0 评论 -
计数二进制子串java实现
计数二进制子串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-10 09:58:10 · 193 阅读 · 0 评论 -
打家劫舍题java实现
打家劫舍 IIIhttps://leetcode-cn.com/problems/house-robber-iii/在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入:原创 2020-08-05 10:45:15 · 333 阅读 · 0 评论 -
课程表java实现
课程表https://leetcode-cn.com/problems/course-schedule/你这个学期必须选修 numCourse 门课程,记为0到numCourse-1 。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]输出: true解释:总共有 2 门课程。学习课程 ...原创 2020-08-04 20:49:14 · 3234 阅读 · 0 评论 -
字符串相加java实现
字符串相加https://leetcode-cn.com/problems/add-strings/给定两个字符串形式的非负整数num1 和num2,计算它们的和。注意:num1 和num2的长度都小于 5100.num1 和num2 都只包含数字0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式。class Solution { public String addStrings...原创 2020-08-03 10:42:45 · 1281 阅读 · 0 评论 -
矩阵中的最长递增路径java实现
矩阵中的最长递增路径https://leetcode-cn.com/problems/longest-increasing-path-in-a-matrix/给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums =[ [9,9,4], [6,6,8], [2,1,1]]输出: 4解释: 最长递增路径为[1, 2, 6, 9]。示例 2...原创 2020-07-26 16:45:53 · 578 阅读 · 0 评论 -
分割数组的最大值java实现
分割数组的最大值https://leetcode-cn.com/problems/split-array-largest-sum/给定一个非负整数数组和一个整数m,你需要将这个数组分成m个非空的连续子数组。设计一个算法使得这m个子数组各自和的最大值最小。注意:数组长度n满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子...原创 2020-07-25 20:24:09 · 430 阅读 · 0 评论 -
不同的二叉搜索树java实现
一、不同的二叉搜索树https://leetcode-cn.com/problems/unique-binary-search-trees/给定一个整数 n,求以1 ...n为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 ...原创 2020-07-21 09:59:24 · 344 阅读 · 0 评论 -
二叉树的前中后序遍历(递归方法和迭代方法)java实现
一、二叉树的前序遍历https://leetcode-cn.com/problems/binary-tree-preorder-traversal/给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,2,3]递归方法:容易理解步骤简单/** * Definition for a binary tree node. * public class TreeNode { * ...原创 2020-07-20 17:14:19 · 547 阅读 · 0 评论 -
两数之和 IV - 输入 BSTjava实现
两数之和 II - 输入有序数组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...原创 2020-07-20 11:18:01 · 160 阅读 · 0 评论 -
交错字符串问题java实现
交错字符串https://leetcode-cn.com/problems/interleaving-string/给定三个字符串s1, s2, s3, 验证s3是否是由s1和s2 交错组成的。示例 1:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出: true示例2:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出: false思路:因为可能存在相同的字...原创 2020-07-18 10:41:46 · 292 阅读 · 0 评论 -
三角形最小路径和java实现
三角形最小路径和https://leetcode-cn.com/problems/triangle/给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为11(即,2+3+5+1= 11)。思路一:D...原创 2020-07-14 10:00:12 · 318 阅读 · 0 评论 -
dp规划路径问题java实现
1.地下城游戏https://leetcode-cn.com/problems/dungeon-game/一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其.原创 2020-07-13 15:51:55 · 508 阅读 · 0 评论 -
两个数组的交集问题java实现
1.两个数组的交集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 10:07:26 · 2602 阅读 · 0 评论 -
leetcode买卖股票的最佳时机问题汇总java实现
1.买卖股票的最佳时机https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =..原创 2020-07-12 20:23:26 · 852 阅读 · 0 评论 -
恢复空格
题目描述:https://leetcode-cn.com/problems/re-space-lcci哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidntboot"。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表原创 2020-07-09 16:23:26 · 248 阅读 · 0 评论 -
两数之和、三数之和、四数之和java实现
两数之和https://leetcode-cn.com/problems/two-sum题目描述给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路:for循环...原创 2020-05-14 15:29:18 · 723 阅读 · 1 评论 -
查找第k个排列java实现
题目描述https://leetcode-cn.com/problems/permutation-sequence给出集合[1,2,3,…,n],其所有元素共有n! 种排列。按大小顺序列出所有排列情况,并一一标记,当n = 3 时, 所有排列如下:"123""132""213""231""312""321"给定n 和k,返回第k个排列。说明:给定 ...原创 2020-05-03 11:51:23 · 574 阅读 · 0 评论 -
复原IP地址java实现
题目描述https://leetcode-cn.com/problems/restore-ip-addresses给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]思路:DFS加回溯法,找到符合条件的String分配就加入结果中cla...原创 2020-04-28 18:28:41 · 1044 阅读 · 0 评论