最长上升子序列(LIS)的定义:    一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1 <= i1 < i2 < … < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8). 三种求解方法: 1. O(n^2)的DP 2. O(nlogn)的二分+贪心法 3. O(nlogn)的树状数组优化的DP 题目:Longest Increasing Subsequence 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2, 继续阅读 >>


刘生玺 18/07/20 12:10:14
题目:不同路径 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格。有多少可能的路径? 说明:m 和 n 的值均不超过 100。 示例 1: 输入: m = 3, n = 2 输出: 3 解释: 从左上角开始,总共有 3 条路径可以到达右下角。 1. 向右 -> 向右 -> 向下 2. 向右 -> 向下 -> 向右 3. 向下 -> 向右 -> 向右 示例 2: 输入: m = 7, n = 3 输出: 28 原题链接:https://leetcode-cn.com/explore/interview/card/top-interview-questions-medium/51/dynamic-programming/105/ 继续阅读 >>


刘生玺 18/07/19 11:15:47
1. 感性认识“动态规划” 1. 基本概念    是求解决策过程(decision process)最优化的数学方法。把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,是一种解决这类过程优化问题的新方法。 2. 使用技巧:    动态规划算法通常用于求解具有某种最优性质的问题!!!特别的 ,动态规划(Dynamic Programming)对于子问题重叠的情况特别有效,因为它将子问题的解保存在表格中,当需要某个子问题的解时,直接取值即可,从而避免重复计算! 3. 基本思想与策略 我们通过一个问题来引出: 提问:动态规划与分治法有什么不同?    答:适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题 继续阅读 >>


刘生玺 18/07/18 19:02:57
全排列算法思想: 1. 全排列的定义和公式:    从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。由排列的定义,显然不同的顺序是一个不同的排列。从n个元素中取m个元素的所有排列的个数,称为排列数。从n个元素取出n个元素的一个排列,称为一个全排列。 公式:全排列数f(n) = n! (定义0!=1) 2. 时间复杂度:    n个数(字符、对象)的全排列一共有n!种,所以全排列算法至少时间O(n!)的。如果要对全排列进行输出,那么输出的时间要O(n∗n!),因为每一个排列都有n个数据。所以实际上,全排列算法对大型的数据是无法处理的,而一般情况下也不会要求我们去遍历一个大型数据的全排列。 3. 全排列的初始思想    为了解决一个算法问题,我们选择从基本的想法做起。先回顾一下我们自己是如何写一组数的全排列的:1,3,5,9 首先肯定是 : 1 ,[3, 5,9的全排列] 3 继续阅读 >>


刘生玺 18/07/17 11:08:08
1. 缓冲管理 为什么引入缓冲? (不想说了) I/O缓冲方式 1. 单缓冲    块设备输入时, 输入到缓冲区的时间为T, OS将数据从缓冲区传到用户区的时间为M, CPU处理这块数据的时间为C; 显然T和C是可以并行的。 2. 双缓冲   为了加快I/O速度提高设备利用率,又引入了双缓冲机制(缓冲对换 Buffer Swapping); 如果C“<”T, 块设备可连续输入 3.缓冲池(Buffer Pool) 缓冲池的组成 空缓冲链队列emp:由空缓冲区组成 输入缓冲链队列inq:由装满输入数据的缓冲区组成 输出缓冲链队列out:由装满输出数据的缓冲区组成 4种工作缓冲区 收容输入、提取输入、收容输出、提取输出。 从某队列上取下来操作完后再挂到另一队列上 对缓冲池队列操作的两个过程 缓冲池中的队列是临界资源要考虑互斥与同步 2. 设备分配(暂略) 3. 设备驱动 1.设备驱动程序的功能和特点 1.设 继续阅读 >>


刘生玺 18/07/11 11:30:46
主要内容: 1 I/O系统的组成 2 I/O 控制方式 3 缓冲管理 4 设备分配 5 设备驱动 6 磁盘存取设备管理 1. I/O系统的基本功能 隐藏物理设备的细节 与设备的无关性 提高处理机和I/O设备的利用率 对I/O设备进行控制 确保对设备的正确共享 错误处理 说明:1,2是为了方便用户使用I/O设备。3,4是用于提高CPU与I/O设备的利用率。5,6是为了用户在共享设备时提供方便,以保证系统能够有条不紊的运行,当系统发生错误时能够及时发现错误,甚至于自动修正错误。 2. I/O系统的层次结构和模型 (1)I/O软件的层次结构 1.用户层I/O 软件 2.设备独立性软件 3.设备驱动程序 4.中断处理程序 (2)I/O系统的分层 (1) 中断处理程序。 (2) 设备驱动程序。 (3) 设备独立性软件。 3. I/O 设备分类 1.按使用特性分 1. 存储型设备 2. 输入型设备(外设 => 继续阅读 >>


刘生玺 18/07/11 10:36:12
1. 半导体存储器的分类 从应用角度可将半导体存储器分为两大类: RAM: RAM中的信息断电后即丢失 ROM: 断电后信息不会丢失,常用来存放不需要改变的信息(如某些系统程序) 1.1 RAM 的分类: 1. 双极型 2. MOS型 双极型:   存取速度快、集成度较低、功耗较大、成本较高等特点,适用于对速度要求较高的高速缓冲存储器 MOS型:   MOS型存储器具有集成度高、功耗低、价格便宜等特点,适用于内存储器 MOS型存储器按信息存放方式又可分为: 1.静态RAM(Static RAM,简称SRAM) 2.动态RAM(Dynamic RAM,简称DRAM) 1. 静态RAM:    SRAM存储电路以双稳态触发器为基础,状态稳定,只要不掉电,信息不会丢失。其优点是不需要刷新,控制电路简单,但集成度较低,适用于不需要大存储容量的计算机系统。 2. 动态RAM:    DRAM存储单元以电容为基础,电路简单, 继续阅读 >>


刘生玺 18/07/09 15:56:55
  磁盘存储器具有容量大、存取速度快、支持随机存取的特点,因此被广泛应用于计算机系统中。对于操作系统来说,管理好磁盘的三大要求和目标是: (1)合理有效利用磁盘:采用合理的文件存储空间分配算法,尽量减少磁盘碎片,提高硬盘的利用率; (2)提高磁盘的I/O速度:采用缓存等技术,提供访问速度; (3)提高磁盘可靠性:采用冗余和纠错检错等技术,保证磁盘的数据不会被破坏。 1. 外存的组织方式   文件是存放在磁盘上的,而磁盘是以盘块为基本的分配单位的,那么一个文件是怎么存放在磁盘上的呢,这就是外存的组织方式,主要有以下三种: 1.连续组织方式 2.链接组织方式 3.索引组织方式 文件的物理结构与外存分配方式有关,在采用连续分配方式时的文件物理结构是顺序式的文件结构,在采用链接分配方式将形成链接式文件结构,而索引分配方式将形成索引式文件结构。 1.1 连续组织方式:   要求为每一个文件分配一组相邻接的(也就是连续的)盘块。就好像分配一个连续的数组给文 继续阅读 >>


刘生玺 18/07/08 23:03:30
计算机是通过执行指令序列来完成用户的特定任务的,因此每种计算机都有一组指令集供用户使用,这组指令集就称为计算机的指令系统。 主要内容: 1、8086/8088指令格式 2、8086/8088指令系统的寻址方式 3、8086/8088指令系统 重点: - 8086指令格式和寻址方式(也是考点) - 数据传送、算术运算、位操作、串操作、控制转移以及处理器控制等六大类指令 1. 8086指令格式   计算机是通过执行指令来处理各种数据的,因此,一条指令即要指出如何处理数据,同时还应指出数据的来源、操作结果的去向。一般来说指令是由操作码、寻址方,操作数组成。 1.1操作数的分类: 1.源操作数:只能读取的操作数。 2.目的操作数:即可读取又可写入(存放操作结果)的操作数。 ADD AX , BX 操作码 目的操作数 源操作数 还可以分为: 1.数据操作数 2.地址操作数 1.1.1 数据 继续阅读 >>


刘生玺 18/07/07 22:38:08
一:主要内容: 概述 文件的逻辑结构 ( 顺序文件,索引文件,索引顺序文件,直接文件和哈希文件 ) 外存分配方式 文件目录管理 文件存储空间管理 文件系统的可靠性和安全性 文件系统的数据一致性控制 文件管理,由于系统的内存有限并且不能长期保存,故平时总是把它们以文件的形式存放在外存中,需要时再将它们调入内存。如何高效的对文件进行管理是操作系统实现的目标。 二:文件和文件系统 2.1   现代OS几乎都是通过文件系统来组织和管理在计算机中所存储的大量程序和数据的。文件系统的管理功能是通过把它所管理的程序和数据组织成一系列文件的方法来实现的。而文件则是指具有文件名的若干相关元素的集合。元素通常是记录,而记录是一组有意义的数据项的集合。可以把数据组成分为数据项、记录、文件。      ①数据项,数据项是最低级数据组织形式。分为基本数据项(用于描述一个对象某种属性的字符集,是数据组织中可以明明的最小逻辑数据单位,即原子数据,又称为数据元素或字段)和组合数据项(由若干个基本数据项组成) 继续阅读 >>


刘生玺 18/07/07 16:11:32