19k 32 分钟

# LeetCode 200. 岛屿数量 200. Number of Islands 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和 / 或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入:grid =...
8.2k 14 分钟

# LeetCode 42. 接雨水 42. Trapping Rain Water 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:The above elevation map (black section) is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue section) are being...
17k 28 分钟

# LeetCode 11. 盛最多水的容器 11. Container With Most Water 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 示例 1: 输入:height = [1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为...
89k 2:29

# LeetCode 10. 正则表达式匹配 10. Regular Expression Matching 给你一个字符串 s 和一个字符规律 p ,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。 '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s 的,而不是部分字符串。 示例 1: 输入:s = "aa", p = "a" 输出:false 解释:"a"...
36k 59 分钟

# LeetCode 1005. K 次取反后最大化的数组和 1005. Maximize Sum Of Array After K Negations 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后,返回数组 可能的最大和 。 示例 1: 输入:nums = [4,2,3], k = 1 输出:5 解释:选择下标 1 ,nums 变为 [4,-2,3] 示例 2: 输入:nums = [3,-1,0,2], k =...
41k 1:09

# LeetCode 131. 分割回文串 131. Palindrome Partitioning 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s = "aab" 输出:[["a","a","b"],["aa","b"]] 示例 2: 输入:s =...
761 1 分钟

回溯法也叫回溯搜索法,它是一种搜索的方式 只要有递归就会有回溯 回溯法的工作原理 构造空间树 进行遍历 如遇到边界条件,即不再向下搜索,转而搜索另一棵子树 达到目标条件,输出结果 回溯的本质是穷举,即便加入 剪枝 操作,回溯法也并不高效 回溯法一般可以解决如下几种问题: 组合问题 :N 个数里面按一定规则找出 k 个数的集合 切割问题 :一个字符串按一定规则有几种切割方式 子集问题 :一个 N 个数的集合里有多少符合条件的子集 排列问题 :N 个数按一定规则全排列,有几种排列方式 棋盘问题 :N...
109k 3:02

# LeetCode 100. 相同二叉树 100. Same Tree 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p = [1,2,3], q = [1,2,3] 输出:true 示例 2: 输入:p = [1,2], q = [1,null,2] 输出:false 示例 3: 输入:p = [1,2,1], q = [1,1,2] 输出:false 提示: 两棵树上的节点数目都在范围 [0,100][0, 100][0,100] 内 −104≤-10^4...
27k 45 分钟

# LeetCode 1047. 删除字符串中的所有相邻重复项 1047. Remove All Adjacent Duplicates In String 给出由小写字母组成的字符串 S ,重复项删除操作 会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例 1: 输入:s = "abbaca" 输出:"ca" 解释:例如,在 "abbaca" 中,我们可以删除...