![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 61
elsieyin
这个作者很懒,什么都没留下…
展开
-
打印队列笔记
原视频课程案例:一个实验室,在任意的一个小时内,大约有10名学生在场,这一小时中,每人会发起2次左右的打印,每次1~20页打印机的性能:以草稿模式打印的话,每分钟10页,以正常模式打印的话,打印质量好,但速度下降为每分钟5页。过程:生成和提交打印任务确定生成概率:实例为每小时会有10个学生提交的20个作业,这样,概率是每180秒会有1个作业生成并提交,概率为每秒1/180。确定打印页数:实例是1~20页,那么就是1~20页之间概率相同。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存原创 2021-03-27 11:35:00 · 429 阅读 · 0 评论 -
K大元素
class Solution {public: // 将arr[l...mid]和arr[mid+1...r]两部分进行归并 void __merge(T arr[], int l, int mid, int r){ T aux[r-l+1]; for (int i = l ; i <= r ; i ++) aux[i...原创 2020-02-01 15:09:09 · 162 阅读 · 0 评论 -
26. 删除排序数组中的重复项
题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给...原创 2019-09-05 17:15:53 · 89 阅读 · 0 评论 -
4. 寻找两个有序数组的中位数
题目给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1: nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是...原创 2019-09-05 14:56:37 · 126 阅读 · 0 评论 -
292. Nim 游戏
题目你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3...原创 2019-09-05 10:02:49 · 73 阅读 · 0 评论 -
146.LRU缓存机制
地址用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用...原创 2019-09-05 09:41:39 · 84 阅读 · 0 评论 -
236. 二叉树的最近公共祖先
class Solution: def __init__(self): # Variable to store LCA node. self.ans = None def lowestCommonAncestor(self, root, p, q): """ :type root: TreeNode ...原创 2019-08-22 19:57:13 · 98 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先
分析节点 pp,qq 的最近公共祖先(LCA)是距离这两个节点最近的公共祖先节点。在这里 最近 考虑的是节点的深度。注意理解 最近 这个词的含义注意:pp 和 qq 其中的一个在 LCA 节点的左子树上,另一个在 LCA 节点的右子树上。也有可能是下面这种情况:朴素的算法如下:从根节点开始遍历树如果节点 pp 和节点 qq 都在右子树上,那么以右孩子为根节点继续 1 的操作如果...转载 2019-08-21 21:13:53 · 101 阅读 · 0 评论 -
104. 二叉树的最大深度
题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。class Solution { public int maxDepth(Tr...原创 2019-08-16 16:09:50 · 110 阅读 · 0 评论 -
136. 只出现一次的数字
题目地址给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4分析:首先想到的是hash表,但空间复杂度是 O(n),不满足题目要求。因此想到位操作。如果我们对 ...原创 2019-08-12 20:42:09 · 134 阅读 · 0 评论 -
78. Subsets子集
题目地址给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]分析数据不含重复元素,题解也要求无重复组合。1.回溯算法f([1,2]) = [[...原创 2019-08-11 17:33:09 · 117 阅读 · 0 评论 -
230. 二叉搜索树中第K小的元素
题目给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 1示例 2:输入: root = [5,3,6,2,4,null,null,1],...原创 2019-08-19 16:09:41 · 145 阅读 · 0 评论 -
231. 2的幂Power of Two
题目给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false分析数字n若是2的次方,则一定满足以下条件:二进制表示下,n最高位为1,其余所有位为0;二进制表示下,n - 1最高位为0,其余所有位为1(除...原创 2019-08-14 09:35:39 · 133 阅读 · 0 评论 -
124. 二叉树中的最大路径和
题目给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 / ...原创 2019-08-18 17:46:04 · 75 阅读 · 0 评论 -
169. 求众数 Majority Element
题目给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2分析解题关键 :众数 是大小为n的数组中出现次数大于 n/2 的元素。暴力算法 遍历整个数组,然后用另一重循环统计每...原创 2019-08-13 16:46:50 · 135 阅读 · 0 评论