- 博客(9)
- 收藏
- 关注
原创 2021-09-30Leetcode1249移除无效的括号
Leetcode1249 给你一个由 ‘(’、’)’ 和小写字母组成的字符串 s。 你需要从字符串中删除最少数目的 ‘(’ 或者 ‘)’ (可以删除任意位置的括号),使得剩下的「括号字符串」有效。 请返回任意一个合法字符串。 思路:栈+set判断左右括号 class Solution { public: string minRemoveToMakeValid(string s) { stack<int> stk; unordered_set<int&
2021-09-30 15:12:12 123
原创 2021-09-29Leetcode583两个字符串的删除操作
Leetcode583 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。 本题就是在最长公共子序列的基础上做了一个减法,求需要删除操作的次数。 class Solution { public: int minDistance(string word1, string word2) { int m = word1.size(), n = word2.size(); vector&
2021-09-29 09:52:40 174
原创 2021-09-28 LeetCode90子集II
LeetCode90子集II 其实和子集I的区别就是是否有重复元素,朴素的想法就是加入一个set来去重,但是不支持vector,因此需要定义一个vectorhash。然后判断的时候判断set中是否包含排序后的vector。 struct vectorhash{ inline size_t operator()(const vector<int>& v) const{ size_t res = 0; for(int i : v){
2021-09-28 16:19:52 94
原创 2021-09-28Leetcode437路径总和III
Leetcode437 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 注意点: 节点值存在负数所以不能判断target到0就直接停止。 class Solution { public: int res = 0; int pathSum(TreeNode* root, int targetSum) {
2021-09-28 16:08:32 113
原创 2021-09-27Leetcode130被围绕的区域
给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ 组成,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 LeetCode130 主要解法: 因为边界上的永远不会被围绕,所以dfs所有边界上的‘O’得到与其相连的‘O’块,并改为‘A’。 最后只需要将‘O’改为‘X’,‘A’改为‘O’就满足题目要求。 class Solution { public: int m ,n; void solve(vector<vector<ch
2021-09-27 10:39:28 63
原创 2021-09-27Leetcode1091二进制矩阵
给你一个 n x n 的二进制矩阵 grid 中,返回矩阵中最短畅通路径的长度。如果不存在这样的路径,返回 -1 。 二进制矩阵中的 畅通路径 是一条从 左上角 单元格(即,(0, 0))到 右下角 单元格(即,(n - 1, n - 1))的路径,该路径同时满足下述要求: 路径途经的所有单元格都的值都是 0 。 路径中所有相邻的单元格应当在 8 个方向之一 上连通(即,相邻两单元之间彼此不同且共享一条边或者一个角)。 畅通路径的长度是该路径途经的单元格总数。 LeetCode1091 class Solu
2021-09-27 10:17:35 82
原创 2021-09-27 Leetcode572另一棵树的子树
给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。 如果存在,返回 true ;否则,返回 false 。 Leetcode572 dfs+判断 class Solution { public: bool isSubtree(TreeNode* root, TreeNode* subRoot) { return dfs(root, subRoot); } bool dfs(TreeNode* ro
2021-09-27 09:40:03 61
原创 2021-09-26楷登电子第一题字符串修改
现有一个源字符串s,目标字符串t,它们都由升序排列的大写字母组成。 现在按照如下规则将s转变为t,如果s中有连续的相同字符,那么可以删除两个或以上该字符,直到s和t完全相同。 输入描述: 第一行为源字符串,由升序排列的大写字母组成。 第二行为目标字符串,由升序排列的大写字母组成。 输出描述: 输出完成转变所需最少的删除步数,如果无法完成转变,则输出-1。 有序的条件很关键 #include <iostream> #include <unordered_map> #include &l
2021-09-26 22:35:31 108
原创 2021-09-26楷登电子第三题BFS
涉及到unordered_set和pair以及tuple,记录一下,感觉拿DFS做会简单很多。 输入描述: 第一行为两个正整数,分别表示上述之M,N。 接下来有M行,每一行都包含N个正整数。 后面一行有两个整数,表示初始格子的行号及列号,行号范围为[0,M-1],列号范围为[0,N-1]。 最后一行有两个整数,表示目标格子的行号及列号,行号范围为[0,M-1], 列号范围为[0,N-1]。 输出描述: 若当前位置值大于等于下一步的值则不消耗能量,若小于则消耗差值的能量 求:输出最小消耗的总能量。 #incl
2021-09-26 22:05:41 65
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人