课程名称:计算机组成原理(上) 授课老师:刘宏伟 发证机构:哈尔滨工业大学、中国大学MOOC 学习时间:2018.9-2019.1 分数:93.75分 证书类型:优秀证书 发证时间:2019.1.25
课程名称:计算机组成原理(上) 授课老师:刘宏伟 发证机构:哈尔滨工业大学、中国大学MOOC 学习时间:2018.9-2019.1 分数:93.75分 证书类型:优秀证书 发证时间:2019.1.25
Leetcode 85:最大矩形 题目描述 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 代码实现 int maximalHistRec(vector<int>& height) { stack<int> stackStore; int res = height[0]; for (int i = 0; i < height.size(); i++) { if (stackStore.empty(…
Leetcode 96:不同的二叉搜索树 题目描述 给定一个整数n,求以1...n为节点的二叉搜索树有多少种? 示例 解题思路 可以使用动态规划解,但是这个题同样也是一个卡塔兰数问题。卡塔兰数的应用主要有:找零钱问题、三角网格问题、括号排列问题、球盒问题等。卡塔兰数的数学表达式为 所以代码只需要实现这个式子即可,时间复杂度为O(n),空间复杂度为O(1)。 代码实现 int numTrees(int n) { long long C = 1; for (int i = 0; i < n; ++…
Leetcode 101:对称二叉树 题目描述 给定一个二叉树,检查它是否是镜像对称的。 解题思路 既然它是镜像的话,那么就是左右对称,这个我们可以使用一个递归来解决。我们令A等于这个树,B也等于这个树,假设A树和B树都只有一个结点(空结点也看做是一个结点)其实也就是两个树中至少一个树为NULL的时候,结果只会存在三种情况: 1.A的该结点为NULL,B的该结点也为NULL,即都是空结点,那么这两个树相等,自然是镜像,返回true; 2.A的该结点为NULL,B的该结点不为NULL(或者A的该结点不是NULL,B的…
Leetcode 105:重建二叉树 题目描述 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 示例 给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 题目解析 我们根据前序遍历的特点可以发现,前序遍历的第一个数字一定是这个二叉树的根节点;然后根据中序遍历的特点可发现,根节点左侧的数字一定是左子树,右侧一定是右子树。然后将中序遍历以根节点为中心划分…
Leetcode 124:二叉树中的最大路径和 题目描述 给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 解题思路 参见: https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/solution/er-cha-shu-zhong-de-zui-da-lu-jing-he-by-ikaruga/ 代码实现 int maxSum(TreeNode* r…
Leetcode 136:只出现一次的数字 题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 输入: [2,2,1] 输出: 1 解题思路 这里我们可以利用异或的原理,我们发现在异或中: a⊕0=a;a⊕a=0。a⊕b⊕a=(a⊕a)⊕b=0⊕b=b 所以我们只需要将所有的数进行 XOR 操作,得到那个唯一的数字。 代码实现 int singleNumber(vector&…
