LeetCode-搜索
leetcode中搜索相关的算法题
我是一名程序媛
这个作者很懒,什么都没留下…
展开
-
LeetCode 310 最小高度树
题目描述树是一个无向图,其中任何两个顶点只通过一条路径连接。 换句话说,一个任何没有简单环路的连通图都是一棵树。给你一棵包含 n 个节点的数,标记为 0 到 n - 1 。给定数字 n 和一个有 n - 1 条无向边的 edges 列表(每一个边都是一对标签),其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 之间存在一条无向边。可选择树中任何一个节点作为根。当选择节点 x 作为根节点时,设结果树的高度为 h 。在所有可能的树中,具有最小高度的树(即,min(.原创 2021-01-11 17:30:52 · 152 阅读 · 0 评论 -
LeetCode 37 解数独
题目描述编写一个程序,通过填充空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 '.' 表示。题解深度优先搜索代码class Solution {public: bool dfs(vector<vector<char>>& board,int index,int n,vector&l.原创 2021-01-11 17:24:09 · 103 阅读 · 0 评论 -
LeetCode 40 组合总和 II
题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。题解对candidates数组进行排序。代码class Solution {public: void dfs(vector<int>& candidates,vector<int>& tmp,int start,int su.原创 2021-01-11 17:21:15 · 121 阅读 · 0 评论 -
LeetCode 39 组合总和
题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。题解使用深度优先搜索,注意candidates 中的数字可以无限制重复被选取代码class Solution {public: void dfs(vector<int>.原创 2021-01-11 10:12:42 · 101 阅读 · 0 评论 -
LeetCode 47 全排列 II
题目描述给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。题解注意这里只有在不相等的时候才进行交换。代码class Solution {public: vector<vector<int>> permuteUnique(vector<int>& nums) { int len=nums.size(); if (!len) return vector<vector&.原创 2021-01-11 09:39:10 · 148 阅读 · 0 评论 -
LeetCode 257 二叉树的所有路径
题目描述给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。题解深度优先搜索代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) .原创 2021-01-11 09:35:36 · 91 阅读 · 0 评论 -
LeetCode 130 被围绕的区域
题目描述给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。题解没有被'X'包围的区域一定在边上,可以从四周出发,将没有被包围的区域找到,剩下的就是被包围的区域。代码class Solution {public: void solve(vector<vector<char>>& board) { int m=board.size();.原创 2021-01-11 09:34:05 · 125 阅读 · 0 评论 -
LeetCode 126 单词接龙 II
题目描述给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。转换后得到的单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回一个空列表。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且二者不相同。题解广度优先搜索代码cl.原创 2021-01-10 17:24:25 · 107 阅读 · 0 评论 -
LeetCode 934 最短的桥
题目描述在给定的二维二进制数组 A 中,存在两座岛。(岛是由四面相连的 1 形成的一个最大组。)现在,我们可以将 0 变为 1,以使两座岛连接起来,变成一座岛。返回必须翻转的 0 的最小数目。(可以保证答案至少是 1。)题解等同于求两个岛屿之间的最近距离,使用广度优先搜索。代码class Solution {public: void dfs(vector<vector<int>>& A,int x,int y,int m,int.原创 2021-01-10 17:16:49 · 347 阅读 · 0 评论 -
LeetCode 51 N 皇后
题目描述n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。题解回溯法代码class Solution {public: vector<vector<string>> solveNQueens(int n) { .原创 2021-01-09 17:54:54 · 91 阅读 · 0 评论 -
LeetCode 79 单词搜索
题目描述给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。题解回溯法代码class Solution {public: bool dfs(vector<vector<char>>& board,int x,int y,int m,int n,int cnt,string word,vect.原创 2021-01-09 17:38:45 · 103 阅读 · 0 评论 -
LeetCode 77 组合
题目描述给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。题解深度优先搜索代码class Solution {public: void dfs(vector<int> tmp,int cnt,int start,int end,int k){ if (cnt==k){ res.push_back(tmp); return; } for (.原创 2021-01-09 17:21:09 · 84 阅读 · 0 评论 -
LeetCode 46 全排列
题目描述给定一个 没有重复 数字的序列,返回其所有可能的全排列。题解交换元素的方法代码class Solution {public: vector<vector<int>> permute(vector<int>& nums) { int len=nums.size(); if (!len) return vector<vector<int>>(0); df.原创 2021-01-09 16:39:24 · 81 阅读 · 0 评论 -
LeetCode 417 太平洋大西洋水流问题
题目描述给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。题解深度优先搜索,可以反过来进行思考,从大洋向内地流。代码class Solution {public: void dfs(vector<vector&.原创 2021-01-08 11:45:07 · 179 阅读 · 0 评论 -
LeetCode 695 岛屿的最大面积
题目描述给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)题解深度优先搜索代码class Solution {public: void dfs(vector<vector<int>>&.原创 2021-01-08 11:36:56 · 87 阅读 · 0 评论