DFS
iblue_coffee
一个又菜还不承认自己菜的追梦人。
展开
-
LeetCode第22题解析
数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]递归:class Solution {public: vector<string> generateParenthesis(int n) { ...原创 2020-07-24 21:14:30 · 675 阅读 · 0 评论 -
LeetCode第78题解析
给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]观察全排列/组合/子集问题,它们比较相似,且可以使用一些通用策略解决。首先,它们的解空间非常大: 全排列:N!。 组合:N!。 子集:2^N,每个元素都可能存在或不存在。...原创 2020-07-28 21:06:34 · 751 阅读 · 0 评论 -
LeetCode第77题解析
给定两个整数n和k,返回 1 ...n中所有可能的k个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]套用回溯算法的模板。vector<vector<int>>res;vector<vector<int>> combine(int n, int k) { if (k <= 0 || n...原创 2020-07-28 21:07:33 · 214 阅读 · 0 评论 -
LeetCode第47题解析
给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]原创 2020-07-29 20:05:03 · 290 阅读 · 0 评论 -
LeetCode第46题解析
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解法一:用回溯算法的模板。class Solution {public: vector<vector<int>> res; vector<vector<int>> permute(v..原创 2020-07-28 21:07:40 · 213 阅读 · 0 评论 -
LeetCode第17题解析
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。解法一:用回溯的方法,DFS。class Solution {public: //先建立一个map,键为char,值...原创 2020-07-30 21:07:13 · 849 阅读 · 0 评论 -
LeetCode第51题解析
n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的n皇后问题的解决方案。每一种解法包含一个明确的n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例:输入: 4输出: [ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..Q.", // 解法 2 "Q...", ...原创 2020-07-31 20:35:24 · 582 阅读 · 0 评论 -
LeetCode第200题解析
给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[['1','1','1','1','0'],['1','1','0','1','0'],['1','1','0','0','0'],['0','0','0','0','0']]输出:1示例2:输入:[['1','1','0','0','0...原创 2020-08-03 19:42:52 · 455 阅读 · 0 评论 -
LeetCode第79题解析
给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED", 返回 true给定 word = "SEE", 返回 true给定 word = "ABCB", 返原创 2020-09-08 22:11:41 · 221 阅读 · 0 评论 -
LeetCode第55题解析
在二维网格grid上,有 4 种类型的方格:1表示起始方格。且只有一个起始方格。 2表示结束方格,且只有一个结束方格。 0表示我们可以走过的空方格。 -1表示我们无法跨越的障碍。返回在四个方向(上、下、左、右)上行走时,从起始方格到结束方格的不同路径的数目。每一个无障碍方格都要通过一次,但是一条路径中不能重复通过同一个方格。示例 1:输入:[[1,0,0,0],[0,0,0,0],[0,0,2,-1]]输出:2解释:我们有以下两条路径:1. (0,0),(0,1)...原创 2020-09-10 21:41:03 · 226 阅读 · 0 评论