Fork me on GitHub

11 2019 档案

摘要:前言 阅览室问题 / 图书馆问题是操作系统中P、V操作部分非常经典的问题!^_^ 阅览室问题 / 图书馆问题 1. 问题描述 有一阅览室,读者进入时必须先在一张登记表上进行登记,该表为每一座位列一表目,包括座号和读者姓名。读者离开时要消掉登记信号,阅览室中共有100个座位。用PV操作控制这个过程。 阅读全文
posted @ 2019-11-29 21:39 克拉默与矩阵 阅读(3756) 评论(0) 推荐(2) 编辑
摘要:前言 缓冲区管理问题是操作系统中P、V操作部分非常经典的问题!^_^ 缓冲区问题 1. 问题描述 有 个进程将字符逐个读入到一个容量为 的缓冲区中 ,当缓冲区满后,由输出进程 负责一次性取走这 个字符。这种过程循环往复,请用信号量和P、V操作写出n个读入进程 和输出进程 能正确工作的的动作序列 2. 阅读全文
posted @ 2019-11-29 21:28 克拉默与矩阵 阅读(392) 评论(0) 推荐(0) 编辑
摘要:前言 吸烟者问题是操作系统中P、V操作部分的经典同步问题,深刻理解吸烟者问题对我们学习操作系统有着很大的益处!(ง •_•)ง 吸烟者问题 1. 问题描述 三个吸烟者在一个房间内,还有一个香烟供应者。为了制造并抽掉香烟,每个吸烟者需要三样东西:烟草、纸和火柴,供应 者有丰富货物提供。三个吸烟者中,第 阅读全文
posted @ 2019-11-29 21:27 克拉默与矩阵 阅读(981) 评论(0) 推荐(0) 编辑
摘要:前言 售票问题 是操作系统中P、V操作部分的经典的问题![]~( ̄▽ ̄)~ 售票问题 问题描述 汽车司机与售票员之间必须协同工作,一方面只有售票员把车门关好了司机才能开车,因此,售票员关好门应通知司机开车,然后售票员进行售票。另 一方面,只有当汽车已经停下,售票员才能开门上下客,故司机停车后应该通知 阅读全文
posted @ 2019-11-29 21:26 克拉默与矩阵 阅读(1075) 评论(0) 推荐(0) 编辑
摘要:前言 农夫 猎人问题 和苹果 桔子问题非常类似,也是操作系统中的经典问题 农夫 猎人问题 1. 问题描述 有一个铁笼子,每次只能放入一个动物。猎手向笼中放入老虎,农夫向笼中放入 羊;动物园等待取笼中的老虎,饭店等待取笼中的羊。 2.问题分析 和 苹果 桔子问题 类似,有4个进程,笼子是互斥量,猎手和 阅读全文
posted @ 2019-11-29 21:24 克拉默与矩阵 阅读(785) 评论(0) 推荐(0) 编辑
摘要:前言 苹果 桔子问题 是操作系统中P、V操作部分经典的问题,属于复杂一点的生产者 消费者问题,可以抽象的理解为两个生产者和两个消费者被连接到大小为1的缓冲区上。 苹果 桔子问题 1. 问题描述 桌子上有一只盘子,每次只能向其中放入一个水果,要求: 1. 爸爸专向盘子里放苹果,女儿专等吃盘子中的苹果; 阅读全文
posted @ 2019-11-29 21:23 克拉默与矩阵 阅读(841) 评论(0) 推荐(0) 编辑
摘要:前言 哲学家就餐问题 是操作系统中P、V操作部分的经典问题。哲学家就餐问题是在计算机科学中的一个经典问题,用来演示在并行计算中多线程同步(Synchronization)时产生的问题。在1971年,著名的计算机科学家艾兹格·迪科斯彻提出了一个同步问题,即假设有五台计算机都试图访问五份共享的磁带驱动器 阅读全文
posted @ 2019-11-29 21:21 克拉默与矩阵 阅读(810) 评论(0) 推荐(0) 编辑
摘要:前言 也叫 缓存绑定问题 (bounded buffer),是一个经典的、多进程同步问题。 生产者、消费者问题 1. 问题描述 有n个生产者和m个消费者,连接在一个有k个单位缓冲区的有界缓冲上。其中,生产者进程Producer_i和消费者进程Consumer_j都是并发进程,只要缓冲区未满,生产者P 阅读全文
posted @ 2019-11-29 21:17 克拉默与矩阵 阅读(954) 评论(0) 推荐(0) 编辑
摘要:前言 读者 写者问题 是操作系统中P、V操作部分经典的同步问题 读者、写者问题 1. 问题描述 读者与写者问题(reader writer problem) (Courtois, 1971)也是一个经典的并发程序设计问题。有两组并发进程:读者和写者,共享一个文件F,要求: 1. 允许多个读者可同时对 阅读全文
posted @ 2019-11-29 21:14 克拉默与矩阵 阅读(1005) 评论(0) 推荐(0) 编辑
摘要:前言 睡眠的理发师问题 是操作系统中P、V操作部分的经典问题 睡眠的理发师问题 1. 问题描述 理发店理有一位理发师、一把理发椅和n把供等候理发的顾客坐的椅子,要求: 1. 如果没有顾客,理发师便在理发椅上睡觉 2. 一个顾客到来时,它必须叫醒理发师 3. 如果理发师正在理发时又有顾客来到,则如果有 阅读全文
posted @ 2019-11-29 21:11 克拉默与矩阵 阅读(1543) 评论(1) 推荐(0) 编辑
摘要:前言 独木桥问题 是操作系统中P、V操作部分的经典问题,有很多变种问题也是考试的重点,需要准确牢记! 独木桥问题1 问题描述 东西向汽车过独木桥,为了保证安全,只要桥上无车,则允许一方的汽车过桥,待一方的车全部过完后, 另一方的车才允许过桥。请用信号量和 P、V操作写出过独木桥问题的同步算法。 问题 阅读全文
posted @ 2019-11-29 19:59 克拉默与矩阵 阅读(2270) 评论(0) 推荐(2) 编辑
摘要:题目描述 "原题" 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。 编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 实例1 实例2 代码实现 允许重复 阅读全文
posted @ 2019-11-09 20:25 克拉默与矩阵 阅读(285) 评论(0) 推荐(0) 编辑
摘要:题目描述 "原题" 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 1 。 你可以假设数组中不存在重复的元素。 你的算法时 阅读全文
posted @ 2019-11-09 20:24 克拉默与矩阵 阅读(159) 评论(0) 推荐(0) 编辑
摘要:题目描述 "原目" 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现2次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 实例2: 代码实现 实现1 c++ class Solution { pu 阅读全文
posted @ 2019-11-09 20:23 克拉默与矩阵 阅读(833) 评论(0) 推荐(0) 编辑
摘要:题目描述 "原题" 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 示例 2: 代码实现 实现1 实现3 "upper_bound" 阅读全文
posted @ 2019-11-09 20:22 克拉默与矩阵 阅读(201) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例 代码实现 阅读全文
posted @ 2019-11-09 20:21 克拉默与矩阵 阅读(122) 评论(0) 推荐(0) 编辑
摘要:题目链接 "牛客网" 题目描述 在一个长度为 n 的数组里的所有数字都在 0 到 n 1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。要求时间复杂度 O(N),空间复杂度 O(1)。因此不能使用排序的方法,也不能使用额外的标 阅读全文
posted @ 2019-11-07 23:54 克拉默与矩阵 阅读(119) 评论(0) 推荐(0) 编辑
摘要:冒泡排序 插入排序 选择排序 c / 思想: 0~N 1选一个最小的放0位置 1~N 1选一个最小的放1位置 / void SelectionSort(int arr[], int n) { if (arr == NULL || n 1);//L和R中点位置(L+R)/2 mergeSort(arr 阅读全文
posted @ 2019-11-07 23:53 克拉默与矩阵 阅读(206) 评论(0) 推荐(0) 编辑
摘要:Union简介 检测大小端使用到了union union维护足够的空间来存放多个数据成员中的一种,而不是为每一个数据成员配置空间。在union中所有的数据成员共用一个空间,同一时间只能存储其中一个数据成员,所有的数据成员具有相同的起始地址,例如 一个union之配置一个足够大的空间来容纳最大长度的数 阅读全文
posted @ 2019-11-07 23:52 克拉默与矩阵 阅读(248) 评论(0) 推荐(0) 编辑
摘要:include using namespace std; //将栈底元素返回并移除 int getAndRemoveLastElement(stack& s){//必须传引用 int result = s.top(); s.pop(); if(s.empty()){ return result; } 阅读全文
posted @ 2019-11-07 23:50 克拉默与矩阵 阅读(106) 评论(0) 推荐(0) 编辑
摘要:题目 使用栈的结构和操作实现一个队列。 代码实现 使用双栈 入队O(n)出队O(1) c++ include using namespace std; struct MyQueue{ stack s1,s2; enQueue(q, x): / While stack1 is not empty, p 阅读全文
posted @ 2019-11-07 23:50 克拉默与矩阵 阅读(156) 评论(0) 推荐(0) 编辑
摘要:题目 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。 要求: 1. pop、push、getMin操作的时间复杂度都是O(1) 2. 设计的栈类型可以使用现成的栈结构。 代码实现 时间复杂度O(1),空间复杂度O(n) 这也是书上的写法,使用两个栈,一个正常存数据,一个 阅读全文
posted @ 2019-11-07 23:49 克拉默与矩阵 阅读(246) 评论(0) 推荐(0) 编辑
摘要:要求 对数组实现旋转操作, leftRotate(ar[], d, n) 长度为n的数组,旋转d个数,相当于循环左移d位。最终效果如下图 代码实现 "视频讲解" Juggling Algorithm 算法思路: 虽然代码实现是向左循环移动d位,并没有单独讲如何实现循环向右移动d位。其实向左循环移动和 阅读全文
posted @ 2019-11-07 23:48 克拉默与矩阵 阅读(446) 评论(0) 推荐(0) 编辑
摘要:题目 不允许使用循环结构(for、while、do while),允许使用isEmpty()、push()、pop()等操作,基于递归实现栈中元素排序 代码实现 "参考" c++ include using namespace std; void stack_insert_sort(stack& s 阅读全文
posted @ 2019-11-07 23:47 克拉默与矩阵 阅读(327) 评论(0) 推荐(0) 编辑
摘要:include using namespace std; void stackSort(stack& s){ if(s.empty())return; stack help; while(!s.empty()){ int tmp = s.top(); s.pop(); while(!help.emp 阅读全文
posted @ 2019-11-07 23:47 克拉默与矩阵 阅读(208) 评论(0) 推荐(0) 编辑
摘要:题目 有一个整型数组arr和一个大小为w的窗口从数组的最左边滑到最右边,窗口每次向右边滑一个位置。 例如,数组为[4,3,5,4,3,3,6,7],窗口大小为3时: [ 4 3 5 ] 4 3 3 6 7窗口中最大值为12 4 [ 3 5 4 ] 3 3 6 7窗口中最大值为12 4 3 [ 5 4 阅读全文
posted @ 2019-11-07 23:45 克拉默与矩阵 阅读(771) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示