
LeetCode习题解
刷LeetCode
imyyy_
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。
展开
-
leetcode 638.
在 LeetCode 商店中, 有 n 件在售的物品。每件物品都有对应的价格。然而,也有一些大礼包,每个大礼包以优惠的价格捆绑销售一组物品。给你一个整数数组 price 表示物品价格,其中 price[i] 是第 i 件物品的价格。另有一个整数数组 needs 表示购物清单,其中 needs[i] 是需要购买第 i 件物品的数量。还有一个数组 special 表示大礼包,special[i] 的长度为 n + 1 ,其中 special[i][j] 表示第 i 个大礼包中内含第 j 件物品的数量,且 s原创 2021-10-24 17:07:35 · 2051 阅读 · 1 评论 -
Leetcode 双周赛(47)
5680. 找到最近的有相同 X 或 Y 坐标的点给你两个整数 x 和 y ,表示你在一个笛卡尔坐标系下的 (x, y) 处。同时,在同一个坐标系下给你一个数组 points ,其中points[i] = [ai, bi] 表示在 (ai, bi) 处有一个点。当一个点与你所在的位置有相同的 x 坐标或者相同的 y坐标时,我们称这个点是 有效的 。请返回距离你当前位置 曼哈顿距离 最近的 有效 点的下标(下标从 0 开始)。如果有多个最近的有效点,请返回下标 最小的一个。如果没有有效点,请返回原创 2021-03-07 10:10:23 · 426 阅读 · 0 评论 -
Leetcode(LCCPU 21)
第一题小力将 N 个零件的报价存于数组 nums。小力预算为 target,假定小力仅购买两个零件,要求购买零件的花费不超过预算,请问他有多少种采购方案。注意:答案需要以 1e9 + 7 (1000000007) 为底取模,如:计算初始结果为:1000000008,请返回 1示例 1:输入:nums = [2,5,3,5], target = 6输出:1解释:预算内仅能购买 nums[0] 与 nums[2]。示例 2:输入:nums = [2,2,1,9], target = 1原创 2021-04-11 08:47:32 · 272 阅读 · 0 评论 -
Leetcode(第228场周赛)
5676. 生成交替二进制字符串的最少操作数(第一题)题目给你一个仅由字符 ‘0’ 和 ‘1’ 组成的字符串 s 。一步操作中,你可以将任一 ‘0’ 变成 ‘1’ ,或者将 ‘1’ 变成 ‘0’ 。交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况,那么该字符串就是交替字符串。例如,字符串 “010” 是交替字符串,而字符串“0100” 不是。返回使 s 变成 交替字符串 所需的 最少 操作数。示例 1:输入:s = "0100"输出:1解释:如果将最后一个字符变为 '1'原创 2021-02-14 13:50:12 · 494 阅读 · 0 评论 -
Leetcode. 16. 最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。排序+双指针 进行排序 先确定一个数,再用双指针从两边循环,class Solution {public: int ..原创 2021-06-29 18:19:23 · 215 阅读 · 0 评论 -
Leetcode (删除有序数组中的重复项 1 && 2)
Leetcode 26.给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 双指针class Solution {public: int removeDuplicates(vector<int>& nums) { if(!nums.size()) return 0; int s=1;原创 2021-04-06 13:28:19 · 310 阅读 · 0 评论 -
Leetcode (每日一题)781. 森林中的兔子
森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在 answers 数组里。返回森林中兔子的最少数量。示例:输入: answers = [1, 1, 2]输出: 5解释:两只回答了 "1" 的兔子可能有相同的颜色,设为红色。之后回答了 "2" 的兔子不会是红色,否则他们的回答会相互矛盾。设回答了 "2" 的兔子为蓝色。此外,森林中还应有另外 2 只蓝色兔子的回答没有包含在数组中。因此森林中兔子的最少数量是 5: 3 只回答的原创 2021-04-04 13:34:59 · 331 阅读 · 0 评论 -
Leetcode( 连续位的最小翻转次数)
995. K 连续位的最小翻转次数在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个1 更改为 0。返回所需的 K 位翻转的最小次数,以便数组没有值为 0 的元素。如果不可能,返回 -1。示例 1:输入:A = [0,1,0], K = 1输出:2解释:先翻转 A[0],然后翻转 A[2]。示例 2:输入:A = [1,1,0], K = 2输出:-1解释:无论我们怎样翻转大小为 2 的子原创 2021-03-30 17:54:25 · 444 阅读 · 0 评论 -
Leetcode (6 hard 题)
基本计算器给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。示例 1:输入:s = "1 + 1"输出:2示例 2:输入:s = " 2-1 + 2 "输出:3示例 3:输入:s = "(1+(4+5+2)-3)+(6+8)"输出:23代码class Solution {public: int calculate(string s) { stack<int> a; //辅助栈 long long.原创 2021-03-26 17:36:48 · 342 阅读 · 0 评论 -
Leetcode 1072. 按列翻转得到最大值等行数
给定由若干 0 和 1 组成的矩阵 matrix,从中选出任意数量的列并翻转其上的 每个 单元格。翻转后,单元格的值从 0 变成 1,或者从1 变为 0 。回经过一些翻转后,行与行之间所有值都相等的最大行数。示例 1:输入:[[0,1],[1,1]]输出:1解释:不进行翻转,有 1 行所有值都相等。示例 2:输入:[[0,1],[1,0]]输出:2解释:翻转第一列的值之后,这两行都由相等的值组成。示例 3:输入:[[0,0,0],[0,0,1],[1,1,0]]输出:2解.原创 2021-03-25 18:03:45 · 292 阅读 · 0 评论 -
Leetcode 456. 132 模式
给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k]组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。示例 1:输入:nums = [1,2,3,4]输出:false解释:序列中不存在 132 模式的子序列。示例 2:输入:nums = .原创 2021-03-24 17:32:40 · 245 阅读 · 0 评论 -
Leetcode 1401. 圆和矩形是否有重叠
给你一个以 (radius, x_center, y_center) 表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2,y2),其中 (x1, y1) 是矩形左下角的坐标,(x2, y2) 是右上角的坐标。如果圆和矩形有重叠的部分,请你返回 True ,否则返回 False 。换句话说,请你检测是否 存在 点 (xi, yi) ,它既在圆上也在矩形上(两者都包括点落在边界上的情况)。示例1:输入:radius = 1, x_center = 0, y_center = 0, x1.原创 2021-03-21 22:42:50 · 431 阅读 · 0 评论 -
Leetcode 115. 不同的子序列
给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE”的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。示例 1:输入:s = "rabbbit", t = "rabbit"输出:3解释:如下图所示, 有 3 种可以从 s 中得到 "rabbit" 的方案。(上箭头符号 ^ 表示选取的字母.原创 2021-03-17 17:46:39 · 206 阅读 · 0 评论 -
Leetcode(每日一题)54. 螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]代码class Solution { static constexpr int direction[4][2]={{0,1},{1,0},{0,-1},-1,0};public: vector<int> spiralOrder(ve.原创 2021-03-15 22:33:14 · 298 阅读 · 0 评论 -
Leetcode (每日一题)227. 基本计算器 II
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。示例 1:输入:s = "3+2*2"输出:7示例 2:输入:s = " 3/2 "输出:1示例 3:输入:s = " 3+5 / 2 "输出:5代码:class Solution {public: int calculate(string s) { vector<int>a; int num=0; char .原创 2021-03-11 13:21:38 · 388 阅读 · 0 评论 -
Leetcode 224. 基本计算器
实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。示例 1:输入:s = "1 + 1"输出:2示例 2:输入:s = " 2-1 + 2 "输出:3示例 3:输入:s = "(1+(4+5+2)-3)+(6+8)"输出:23提示:1 <= s.length <= 3 * 105s 由数字、'+'、'-'、'('、')'、和’` ’ 组成s 表示一个有效的表达式思路:1.设置标志位 sign,加入括号前面为-的话,则里面的数字都要变好,2.原创 2021-03-10 17:26:16 · 217 阅读 · 0 评论 -
Leetcode 每日一题1047. 删除字符串中的所有相邻重复项
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:"abbaca"输出:"ca"解释:例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。思路:“栈”代码.原创 2021-03-09 13:03:48 · 340 阅读 · 0 评论 -
2021-03-08
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。返回符合要求的 最少分割次数 。示例 1:输入:s = "aab"输出:1解释:只需一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串。示例 2:输入:s = "a"输出:0示例 3:输入:s = "ab"输出:1代码class Solution {public: int minCut(string s) { int n=s.size(); vec.原创 2021-03-08 13:26:34 · 301 阅读 · 0 评论 -
Leetcode131. 分割回文串
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: "aab"输出:[ ["aa","b"], ["a","a","b"]]思路:dp[i][j]用来存储s从i 到j的字符串是否为回文字符串;回溯算法代码class Solution { vector<vector<int> >dp; vector<string> path; vector<vect.原创 2021-03-07 09:36:01 · 291 阅读 · 0 评论 -
Leetcode 503. 下一个更大元素 II
给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。示例 1:输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数; 第二个 1 的下一个最大的数需要循环搜索,结果也是 2。代码class Solution {public:.原创 2021-03-06 20:32:37 · 238 阅读 · 0 评论 -
Leetcode 1302. 层数最深叶子节点的和
给你一棵二叉树,请你返回层数最深的叶子节点的和。leetcode官方题解我们从根节点开始进行搜索,在搜索的同时记录当前节点的深度 dep。我们维护两个全局变量 maxdep 和 total,其中 maxdep 表示搜索到的节点的最大深度,total 表示搜索到的深度等于 maxdep 的节点的权值之和。节点 x 的深度 dep 小于 maxdep,那么我们可以忽略节点 x,继续进行搜索;节点 x 的深度 dep 等于 maxdep,那么我们将节点 x 的权值添加到 total 中;节点 x.原创 2021-03-05 13:46:11 · 277 阅读 · 0 评论 -
Leetcode 1379. 找出克隆二叉树中的相同节点
给你两棵二叉树,原始树 original 和克隆树 cloned,以及一个位于原始树 original 中的目标节点 target。其中,克隆树 cloned 是原始树 original 的一个 副本 。请找出在树 cloned 中,与 target 相同 的节点,并返回对该节点的引用(在 C/C++ 等有指针的语言中返回节点指针,其他语言返回节点本身)。输入: tree = [7,4,3,null,null,6,19], target = 3输出: 3解释: 上图画出了树 origina.原创 2021-03-05 12:59:23 · 269 阅读 · 0 评论 -
Leetcode354. 俄罗斯套娃信封问题 300. 最长递增子序列
给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h)出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。说明: 不允许旋转信封。由题目可以知道,俄罗斯套娃信封,需要a[0]<b[0]且a[1]<b[1],两者同时满足才能套娃成功,很容易想到的思路就是先把宽度先从小到大排好序,那么我们就只需要讨论高度,这样就从二维降低到一维处.原创 2021-03-04 13:27:58 · 330 阅读 · 2 评论 -
Leetcode 1315. 祖父节点值为偶数的节点和
给你一棵二叉树,请你返回满足以下条件的所有节点的值之和:该节点的祖父节点的值为偶数。(一个节点的祖父节点是指该节点的父节点的父节点。) 如果不存在祖父节点值为偶数的节点,那么返回 0 。输入:root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5] 输出:18解释:图中红色节点的祖父节点的值为偶数,蓝色节点为这些红色节点的祖父节点。代码solution 1:class Solution { int sum=0; void dfs(.原创 2021-03-03 22:04:00 · 277 阅读 · 2 评论 -
Leetcod e贪心(874. 模拟行走机器人 1518. 换酒问题)
1518. 换酒问题小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒。你购入了 numBottles 瓶酒。如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。请你计算 最多 能喝到多少瓶酒。//直接模拟class Solution {public: int numWaterBottles(int numBottles, int numExchange) { int a=numBottles,b=numBottles; while(a&原创 2021-03-03 13:48:47 · 243 阅读 · 0 评论 -
Leetcode 390. 消除游戏
消除游戏给定一个从1 到 n 排序的整数列表。 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾。第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔一个数字进行删除,直到列表开头。我们不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。 返回长度为 n 的列表中,最后剩下的数字。示例:输入:n = 9,1 2 3 4 5 6 7 8 92 4 6 82 66输出:6如果输入是 a 而输出是 b ,那么输入是 2a 时的输出就.原创 2021-03-02 13:58:41 · 314 阅读 · 0 评论 -
Leetcode 304. 二维区域和检索 - 矩阵不可变
304. 二维区域和检索 - 矩阵不可变给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。示例:给定 matrix = [ [3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7原创 2021-03-02 13:21:54 · 231 阅读 · 0 评论 -
Leetcode 1337. 矩阵中战斗力最弱的 K 行
1337. 矩阵中战斗力最弱的 K 行给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。军人 总是 排在一行中的靠前位置,也就是说 1 总是出现在 0 之前。 示例 1:输入:mat = [[1,1,0,0,0], [1,1,1,1,0], [1,0原创 2021-03-01 21:13:01 · 252 阅读 · 0 评论 -
Leetcode 1129. 颜色交替的最短路径
1129. 颜色交替的最短路径(难!!)题目在一个有向图中,节点分别标记为 0, 1, …, n-1。这个图中的每条边不是红色就是蓝色,且存在自环或平行边。red_edges 中的每一个 [i, j] 对表示从节点 i 到节点 j 的红色有向边。类似地,blue_edges 中的每一个 [i,j] 对表示从节点 i 到节点 j 的蓝色有向边。返回长度为 n 的数组 answer,其中 answer[X] 是从节点 0 到节点 X的红色边和蓝色边交替出现的最短路径的长度。如果不存在这样的路径,那原创 2021-03-01 14:01:59 · 339 阅读 · 0 评论 -
Leetcode 684. 冗余连接
684. 冗余连接在本问题中, 树指的是一个连通且无环的无向图。输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, …, N)的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v] ,满足 u < v,表示连接顶点u 和v的无向图的边。返回一条可以删去的边,使得结果图是一个有着N个节点的树。如果有多个答案,则返回二维数组中最后出现的边。答案边 [u, v] 应满足相同的格式u原创 2021-02-25 14:15:35 · 249 阅读 · 0 评论 -
Leetcode 839. 相似字符串组
839. 相似字符串组如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等,那么称 X 和 Y两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。例如,“tars” 和 “rats” 是相似的 (交换 0 与 2 的位置); “rats” 和 “arts” 也是相似的,但是“star” 不与 “tars”,“rats”,或 “arts” 相似。总之,它们通过相似性形成了两个关联组:{“tars”, “rats”, “arts”} 和 {“star”}。注意,“tars原创 2021-02-25 12:59:59 · 292 阅读 · 0 评论 -
Leetcode 1387. 将整数按权重排序
1387. 将整数按权重排序我们将整数 x 的 权重 定义为按照下述规则将 x 变成 1 所需要的步数:如果 x 是偶数,那么 x = x / 2 如果 x 是奇数,那么 x = 3 * x + 1 比方说,x=3 的权重为 7 。因为 3需要 7 步变成 1 (3 --> 10 --> 5 --> 16 --> 8 --> 4 --> 2 --> 1)。给你三个整数 lo, hi 和 k 。你的任务是将区间 [lo, hi] 之间的整数按照它们的权重 升原创 2021-02-24 23:23:25 · 267 阅读 · 0 评论 -
Leetcode 832. 翻转图像
832. 翻转图像给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。示例 1:输入:[[1,1,0],[1,0,1],[0,0,0]]输出:[[1,0,0],[0,1,0],[1,1,1]]解释:首先翻转每一行: [[0,1原创 2021-02-24 22:26:13 · 273 阅读 · 0 评论 -
Leetcode 拓扑排序(207. 课程表 210.)
207. 课程表你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai,bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。 请你判断是否可能完成所有课程的学习?如果可以,返回true ;否则,返回 false 。示例原创 2021-02-23 16:25:50 · 274 阅读 · 0 评论 -
Leetcode 1361. 验证二叉树
1361. 验证二叉树二叉树上有 n 个节点,按从 0 到 n - 1 编号,其中节点 i 的两个子节点分别是 leftChild[i] 和rightChild[i]。只有 所有 节点能够形成且 只 形成 一颗 有效的二叉树时,返回 true;否则返回 false。如果节点 i 没有左子节点,那么 leftChild[i] 就等于 -1。右子节点也符合该规则。注意:节点没有值,本问题中仅仅使用节点编号。示例 1:输入:n = 4, leftChild = [1,-1,3,-1], r原创 2021-02-23 11:53:10 · 274 阅读 · 0 评论 -
Leetcode 1052. 爱生气的书店老板
1052. 爱生气的书店老板今天,书店老板有一家店打算试营业 customers.length分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。在某些时候,书店老板会生气。 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0。当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 X 分钟不生气,但却只能使用一次。请你返回这一原创 2021-02-23 11:18:47 · 233 阅读 · 0 评论 -
Letcode 51. N 皇后
51. N 皇后n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]解释:如上图所示,4 皇后问题存在两个不同的解法。示例 2:原创 2021-02-22 22:10:35 · 591 阅读 · 0 评论 -
Leetcode 1438. 绝对差不超过限制的最长连续子数组
又是一道滑动窗口1438. 绝对差不超过限制的最长连续子数组给你一个整数数组 nums ,和一个表示限制的整数limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。如果不存在满足条件的子数组,则返回 0 。示例 1:输入:nums = [8,2,4,7], limit = 4输出:2 解释:所有子数组如下:[8] 最大绝对差 |8-8| = 0 <= 4.[8,2] 最大绝对差 |8-2| = 6 > 4. [8,原创 2021-02-21 19:37:17 · 500 阅读 · 0 评论 -
Leetcode 17. 电话号码的字母组合
题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例 2:输入:digits = ""输出:[]示例 3:输入:digits = "2"输出:["a","b","c"]回溯法回溯过程中维护一个字符串,表示已有的字原创 2021-02-20 23:42:01 · 231 阅读 · 0 评论 -
leetcode 79. 单词搜索
题目给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED", 返回 true给定 word = "SEE", 返回 true给定 word = "ABCB",原创 2021-02-20 14:43:30 · 219 阅读 · 0 评论