![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
丹穴山
这个作者很懒,什么都没留下…
展开
-
leetcode617 合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。思路一:dfs进行合并,每次迭代过程就是 :合并节点+合并左子树+合并右子树。思路二:bfs进行合并,维护三个队列进行即可。/** * Definition for a binary tree node. * struct TreeNode ..原创 2020-09-23 12:10:09 · 95 阅读 · 0 评论 -
leetcode78 子集
给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]解法一:每个数字有选和不选两种情况,用1表示选择该数,0表示不选,那么每一种情况都对应着二进制下0~2^n-1中的一个数。通过位运算就可以得到每种情况下应该要选择的数,自然就得到了答案。解法二:...原创 2020-09-20 18:14:40 · 106 阅读 · 0 评论 -
leetcode47
给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]不调用c++的排列函数,,一层递归就相当于往一个位置中填数字,,visited保证一个数只被填一次,,对输入先排序方便确定之前是否在这个位置填过相同的数字。class Solution {public: vector<vector<int>> permuteUnique(vector<int...原创 2020-09-18 12:38:10 · 326 阅读 · 0 评论 -
leetcode1095 山脉数组中查找目标值
给你一个 山脉数组mountainArr,请你返回能够使得mountainArr.get(index)等于target最小的下标 index值。如果不存在这样的下标 index,就请返回-1。何为山脉数组?如果数组A 是一个山脉数组的话,那它满足如下条件:首先,A.length >= 3其次,在0 < i< A.length - 1条件下,...原创 2020-04-29 10:25:29 · 160 阅读 · 0 评论 -
leetcode99: 恢复二叉搜索树
二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例1:输入: [1,3,null,null,2] 1/3\ 2输出: [3,1,null,null,2] 3/1\ 2示例2:输入: [3,1,4,null,null,2] 3/ \1 4 /2输出: [2...原创 2020-04-25 18:11:37 · 134 阅读 · 0 评论 -
leetcode46 全排列
给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]思路:递归加回溯就可以解决。算法上没有难点,细节上可以动态地改变数组,将已经用过的数字放到数组的前面,没用过的放在后面,这样就不需要额外的空间来记录已经用...原创 2020-04-25 00:59:05 · 144 阅读 · 0 评论 -
leetcode25 k个一组反转链表
给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回: 3-&g...原创 2020-04-24 23:56:01 · 364 阅读 · 0 评论 -
leetcode199 二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入:[1,2,3,null,5,null,4]输出:[1, 3, 4]解释: 1 <---/ \2 3 <---\ \ 5 4 <---思路:层次遍历整颗...原创 2020-04-22 18:17:02 · 90 阅读 · 0 评论 -
leetcode1248 统计优美子数组
给你一个整数数组nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例 1:输入:nums = [1,1,2,1,1], k = 3输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。示例 2:输入:nums = [2,4,6],...原创 2020-04-21 11:20:30 · 116 阅读 · 0 评论 -
leetcode4 寻找两个数组的中位数
给定两个大小为 m 和 n 的有序数组nums1 和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。你可以假设nums1和nums2不会同时为空。思路:因为需要logn的时间复杂度,所以考虑用二分法求解。具体答案参考官方给出的解释:https://leetcode-cn.com/problems/median-of-t...原创 2020-04-20 20:52:01 · 126 阅读 · 0 评论 -
leetcode200:岛屿问题
给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:11110110101100000000输出:1示例2:输入:11000110000010000011输出: 3解释: 每座岛屿...原创 2020-04-20 15:42:30 · 249 阅读 · 0 评论 -
计算字符串的编辑距离
Levenshtein距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。如bankcomm和bocomm的距离为3,只要将‘o'改为’a'再增加‘nk’,bocomm就和bankcomm相同。所以距离为3利用动态规划求解:建立一个二维数组dp[m][n],m和n分别为字符串A和...原创 2020-04-20 14:10:43 · 822 阅读 · 0 评论 -
求给定二叉树的最小深度
class Solution {public: int run(TreeNode *root) { int left,right; if(root==NULL){ return 0; } left=run(root->left); right=run(root->righ...原创 2020-03-23 14:03:23 · 202 阅读 · 0 评论