
LeetCode
关切得大神
这个作者很懒,什么都没留下…
展开
-
java leetcode之[中等]475. 供暖器
题目的链接在这里:https://leetcode-cn.com/problems/heaters/目录题目大意一、示意图二、解题思路暴力判断(出错了)题目大意冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。在加热器的加热半径范围内的每个房屋都可以获得供暖。现在,给出位于一条水平线上的房屋 houses 和供暖器 heaters 的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。说明:所有供暖器都遵循你的半径标准,加热的半径也一样。一、示意图二、解题思路原创 2021-12-20 10:01:58 · 1065 阅读 · 0 评论 -
java leetcode之[中等]583. 两个字符串的删除操作
题目的链接在这里:https://leetcode-cn.com/problems/delete-operation-for-two-strings/目录题目大意一、示意图二、解题思路动态规划题目大意给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。一、示意图二、解题思路动态规划动态规划代码如下:class Solution { public int minDistance(Strin原创 2021-12-15 14:59:39 · 935 阅读 · 0 评论 -
java leetcode之[中等]673. 最长递增子序列的个数
题目的链接在这里:https://leetcode-cn.com/problems/number-of-longest-increasing-subsequence/目录题目大意一、示意图二、解题思路动态规划题目大意给定一个未排序的整数数组,找到最长递增子序列的个数。一、示意图二、解题思路动态规划动态规划代码如下:class Solution { public int findNumberOfLIS(int[] nums) { if (nums.leng原创 2021-12-14 16:47:19 · 657 阅读 · 0 评论 -
java leetcode之[中等]807. 保持城市天际线
题目的链接在这里:https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline/目录题目大意一、示意图二、解题思路暴力判断题目大意在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度。 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度。 高度 0 也被认为是建筑物。最后,从新数组的所有四个方向(即顶部,底部,左侧和右侧)观看的“天际线”必须与原始数组的天际线相同。 城市的天际线是从远处观看时,原创 2021-12-13 10:38:50 · 477 阅读 · 0 评论 -
java leetcode之[中等]LCP 28. 采购方案
题目的链接在这里:https://leetcode-cn.com/problems/4xy4Wx/目录题目大意一、示意图二、解题思路双指针题目大意小力将 N 个零件的报价存于数组 nums。小力预算为 target,假定小力仅购买两个零件,要求购买零件的花费不超过预算,请问他有多少种采购方案。注意:答案需要以 1e9 + 7 (1000000007) 为底取模,如:计算初始结果为:1000000008,请返回 1一、示意图二、解题思路双指针双指针代码如下:class Solu原创 2021-12-08 09:56:14 · 317 阅读 · 0 评论 -
java leetcode之[中等]39. 组合总和
题目的链接在这里:https://leetcode-cn.com/problems/combination-sum/目录题目大意一、示意图二、解题思路回溯题目大意给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。对于给定的输入,保证和为 target 的唯一组合数少于 150 个原创 2021-12-08 09:37:38 · 132 阅读 · 0 评论 -
java leetcode之[中等]90. 子集 II
题目的链接在这里:https://leetcode-cn.com/problems/subsets-ii/目录题目大意一、示意图二、解题思路回溯题目大意给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。一、示意图二、解题思路回溯回溯代码如下:class Solution { List<List<Integer>> res=new Linked原创 2021-12-07 14:58:37 · 397 阅读 · 0 评论 -
java leetcode之[中等]78. 子集
题目的链接在这里:https://leetcode-cn.com/problems/subsets/目录题目大意一、示意图二、解题思路回溯题目大意给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。一、示意图二、解题思路回溯回溯代码如下:class Solution { //一个是最后结果 List<List<Integer>> res=ne原创 2021-12-07 14:41:11 · 263 阅读 · 0 评论 -
java leetcode之[中等]797. 所有可能的路径
题目的链接在这里:https://leetcode-cn.com/problems/all-paths-from-source-to-target/目录题目大意一、示意图二、解题思路DFS题目大意给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序)二维数组的第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些节点,空就是没有下一个结点了。译者注:有向图是有方向的,即规定了 a→b 你就不能从 b→a 。一、示原创 2021-12-06 15:10:18 · 272 阅读 · 0 评论 -
java leetcode之[中等]1091. 二进制矩阵中的最短路径
题目的链接在这里:https://leetcode-cn.com/problems/shortest-path-in-binary-matrix/目录题目大意一、示意图二、解题思路BFS题目大意给你一个 n x n 的二进制矩阵 grid 中,返回矩阵中最短 畅通路径 的长度。如果不存在这样的路径,返回 -1 。二进制矩阵中的 畅通路径 是一条从 左上角 单元格(即,(0, 0))到 右下角 单元格(即,(n - 1, n - 1))的路径,该路径同时满足下述要求:路径途经的所有单元格都的值都原创 2021-12-06 14:45:01 · 390 阅读 · 0 评论 -
java leetcode之[中等]117. 填充每个节点的下一个右侧节点指针 II
题目的链接在这里:https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node-ii/目录题目大意一、示意图二、解题思路BFS题目大意给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态原创 2021-12-06 14:17:26 · 299 阅读 · 0 评论 -
java leetcode之[中等]200. 岛屿数量
题目的链接在这里:https://leetcode-cn.com/problems/number-of-islands/目录题目大意一、示意图二、解题思路DFSBFS题目大意给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。一、示意图二、解题思路BFS和DFSDFS代码如下:class Solution { boo原创 2021-12-06 11:31:04 · 367 阅读 · 0 评论 -
java leetcode之[中等]209. 长度最小的子数组
题目的链接在这里:https://leetcode-cn.com/problems/minimum-size-subarray-sum/目录题目大意一、示意图二、解题思路滑动窗口题目大意给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。一、示意图二、解题思路滑动窗口滑动窗口代原创 2021-12-05 14:46:57 · 110 阅读 · 0 评论 -
java leetcode之[中等]713. 乘积小于K的子数组
题目的链接在这里:https://leetcode-cn.com/problems/subarray-product-less-than-k/目录题目大意一、示意图二、解题思路双指针题目大意给定一个正整数数组 nums和整数 k 。请找出该数组内乘积小于 k 的连续的子数组的个数。一、示意图二、解题思路双指针双指针代码如下:class Solution { public int numSubarrayProductLessThanK(int[] nums, int k)原创 2021-12-03 10:55:44 · 204 阅读 · 0 评论 -
java leetcode之[中等]438. 找到字符串中所有字母异位词
题目的链接在这里:https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/目录题目大意一、示意图二、解题思路滑动数组题目大意给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。一、示意图二、解题思路滑动数组滑动数组代码如下:class Solution { public Li原创 2021-12-03 09:58:48 · 191 阅读 · 0 评论 -
java leetcode之[中等]11. 盛最多水的容器
题目的链接在这里:https://leetcode-cn.com/problems/container-with-most-water/目录题目大意一、示意图二、解题思路双指针题目大意给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。一、示意图二、解题思路双指针双指针代码如下:c原创 2021-12-02 11:27:07 · 335 阅读 · 0 评论 -
java leetcode之[简单]844. 比较含退格的字符串
题目的链接在这里:https://leetcode-cn.com/problems/backspace-string-compare/目录题目大意一、示意图二、解题思路StringBuffer题目大意给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,请你判断二者是否相等。# 代表退格字符。如果相等,返回 true ;否则,返回 false 。注意:如果对空文本输入退格字符,文本继续为空。一、示意图二、解题思路StringBufferStringBuffer代原创 2021-12-02 10:59:42 · 478 阅读 · 0 评论 -
java leetcode之[中等]59. 螺旋矩阵 II
题目的链接在这里:https://leetcode-cn.com/problems/spiral-matrix-ii/目录题目大意一、示意图二、解题思路正常逻辑题目大意给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。一、示意图二、解题思路正常逻辑正常逻辑代码如下:class Solution { public int[][] generateMatrix(int n) { //四原创 2021-12-02 10:57:13 · 427 阅读 · 0 评论 -
java leetcode之[中等]986. 区间列表的交集
题目的链接在这里:https://leetcode-cn.com/problems/interval-list-intersections/目录题目大意一、示意图二、解题思路正常逻辑题目大意给定两个由一些 闭区间 组成的列表,firstList 和 secondList ,其中 firstList[i] = [starti, endi] 而 secondList[j] = [startj, endj] 。每个区间列表都是成对 不相交 的,并且 已经排序 。返回这 两个区间列表的交集 。形式上,原创 2021-12-02 10:50:58 · 747 阅读 · 0 评论 -
java leetcode之[中等]56. 合并区间
题目的链接在这里:https://leetcode-cn.com/problems/merge-intervals/目录题目大意一、示意图二、解题思路贪心加数组原地修改题目大意以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。一、示意图二、解题思路贪心加数组原地修改贪心加数组原地修改代码如下:class Soluti原创 2021-12-02 10:46:36 · 663 阅读 · 0 评论 -
java leetcode之[中等]82. 删除排序链表中的重复元素 II
题目的链接在这里:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/目录题目大意一、示意图二、解题思路双指针题目大意存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。返回同样按升序排列的结果链表。一、示意图二、解题思路双指针双指针代码如下:/** * Definition for singly原创 2021-12-01 10:00:55 · 93 阅读 · 0 评论 -
java leetcode之[中等]82. 删除排序链表中的重复元素 II
题目的链接在这里:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/目录题目大意一、示意图二、解题思路双指针题目大意存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。返回同样按升序排列的结果链表。一、示意图二、解题思路双指针双指针代码如下:/** * Definition for singly原创 2021-12-01 09:54:33 · 390 阅读 · 0 评论 -
java leetcode之[中等]15. 三数之和
题目的链接在这里:https://leetcode-cn.com/problems/3sum/目录题目大意一、示意图二、解题思路排序加双指针题目大意给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。一、示意图二、解题思路排序加双指针排序加双指针代码如下:class Solution { public List<L原创 2021-11-30 14:56:28 · 79 阅读 · 0 评论 -
java leetcode之[中等]162. 寻找峰值
题目的链接在这里:https://leetcode-cn.com/problems/find-peak-element/目录题目大意一、示意图二、解题思路正常判断题目大意峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。你必须实现时间复杂度为 O(log n) 的算法来解决此问题。一、示意图二、解题思路正原创 2021-11-30 11:02:02 · 374 阅读 · 0 评论 -
java leetcode之[中等]153. 寻找旋转排序数组中的最小值
题目的链接在这里:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/目录题目大意一、示意图二、解题思路正常判断题目大意已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注原创 2021-11-30 09:51:11 · 195 阅读 · 0 评论 -
java leetcode之[动态规划 中等]74. 搜索二维矩阵
题目的链接在这里:https://leetcode-cn.com/problems/search-a-2d-matrix/目录题目大意一、示意图二、解题思路正常判断题目大意编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。一、示意图二、解题思路正常判断正常判断代码如下:class Solution { public boolean searchMatrix(原创 2021-11-29 15:18:33 · 171 阅读 · 0 评论 -
java leetcode之[动态规划 中等]33. 搜索旋转排序数组
题目的链接在这里:https://leetcode-cn.com/problems/search-in-rotated-sorted-array/目录题目大意一、示意图二、解题思路正常判断题目大意整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …,原创 2021-11-29 15:11:11 · 80 阅读 · 0 评论 -
java leetcode之[动态规划 中等]99. 恢复二叉搜索树
题目的链接在这里:https://leetcode-cn.com/problems/recover-binary-search-tree/目录题目大意一、示意图二、解题思路暴力版优化版题目大意给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗?一、示意图二、解题思路中序遍历 暴力版代码如下:/** * Definition for a原创 2021-11-29 14:29:48 · 444 阅读 · 0 评论 -
java leetcode之[动态规划 中等]784. 字母大小写全排列
题目的链接在这里:https://leetcode-cn.com/problems/letter-case-permutation/目录题目大意一、示意图二、解题思路回溯DFS题目大意给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。一、示意图二、解题思路回溯DFS 回溯DFS代码如下:class Solution { public List<String> letterCasePermu原创 2021-11-28 19:58:22 · 220 阅读 · 0 评论 -
java leetcode之[动态规划 简单]191. 位1的个数
题目的链接在这里:https://leetcode-cn.com/problems/number-of-1-bits/目录题目大意一、示意图二、解题思路暴力手段位运算题目大意编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。一、示意图二、解题思路暴力手段和位运算暴力手段代码如下:public class Solution { public int hammingWeight(int n) {原创 2021-11-28 13:57:44 · 183 阅读 · 0 评论 -
java leetcode之[动态规划 简单]231. 2 的幂
题目的链接在这里:https://leetcode-cn.com/problems/power-of-two/目录题目大意一、示意图二、解题思路递归位运算题目大意给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。一、示意图二、解题思路递归和位运算递归代码如下:class Solution { public boolean isPowerO原创 2021-11-28 12:31:05 · 204 阅读 · 0 评论 -
java leetcode之[动态规划 中等]120. 三角形最小路径和
题目的链接在这里:https://leetcode-cn.com/problems/triangle/目录题目大意一、示意图二、解题思路动态规划题目大意给定一个三角形 triangle ,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。一、示意图二、解题思路动态规划动态原创 2021-11-27 22:35:41 · 293 阅读 · 0 评论 -
java leetcode之[动态规划 中等]198. 打家劫舍
题目的链接在这里:https://leetcode-cn.com/problems/letter-case-permutation/目录题目大意一、示意图二、解题思路多维BFS题目大意给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。一、示意图二、解题思路多维BFS多维BFS代码如下:class Solution {public int orangesRotting(int[][] grid) {原创 2021-11-26 14:16:39 · 436 阅读 · 0 评论 -
java leetcode之[动态规划 中等]994. 腐烂的橘子
题目的链接在这里:https://leetcode-cn.com/problems/rotting-oranges/目录题目大意一、示意图二、解题思路多维BFS题目大意在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。一、示意图二、解题思路多维BFS多维BFS原创 2021-11-24 11:01:04 · 630 阅读 · 0 评论 -
java leetcode之[动态规划 中等]542. 01 矩阵
题目的链接在这里:https://leetcode-cn.com/problems/01-matrix/目录题目大意一、示意图二、解题思路动态规划题目大意给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。两个相邻元素间的距离为 1 。一、示意图二、解题思路动态规划动态规划代码如下:class Solution { public int[][] updateMatrix(int[][]原创 2021-11-24 09:50:57 · 345 阅读 · 0 评论 -
java leetcode之[动态规划 中等]116. 填充每个节点的下一个右侧节点指针
题目的链接在这里:https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node/目录题目大意一、示意图二、解题思路bfs题目大意给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如原创 2021-11-23 11:37:15 · 339 阅读 · 0 评论 -
java leetcode之[动态规划 简单]617. 合并二叉树
题目的链接在这里:https://leetcode-cn.com/problems/merge-two-binary-trees/目录题目大意一、示意图二、解题思路递归bfs题目大意给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。一、示意图二、解题思路递归和BFS递归代码如下:/**原创 2021-11-23 11:03:23 · 83 阅读 · 0 评论 -
java leetcode之[动态规划 中等]695. 岛屿的最大面积
题目的链接在这里:https://leetcode-cn.com/problems/max-area-of-island/目录题目大意一、示意图二、解题思路dfsbfs题目大意给你一个大小为 m x n 的二进制矩阵 grid 。岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。岛屿的面积是岛上值为 1 的单元格的数目。计算并返回 grid 中最大的岛屿面积。如果没原创 2021-11-22 11:15:54 · 782 阅读 · 0 评论 -
java leetcode之[动态规划 简单]733. 图像渲染
题目的链接在这里:https://leetcode-cn.com/problems/flood-fill/目录题目大意一、示意图二、解题思路BFSDFS题目大意有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这原创 2021-11-22 10:42:29 · 100 阅读 · 0 评论 -
java leetcode之[动态规划 中等]567. 字符串的排列
题目的链接在这里:https://leetcode-cn.com/problems/permutation-in-string/目录题目大意一、示意图二、解题思路滑动窗口题目大意给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,返回 false 。换句话说,s1 的排列之一是 s2 的 子串 。一、示意图二、解题思路滑动窗口滑动窗口代码如下:class Solution { public boolean ch原创 2021-11-21 14:59:12 · 465 阅读 · 0 评论