2.4k2 分钟

316. 去除重复字母 难度中等 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: 输入:s = "bcabc" 输出:"abc" 示例 2: 输入:s = "cbacdcbc" 输出:"acdb" 提示: 1 <= s.length <= 10^4 s 由小写英文字母组成 # 贪心 + 单调栈 例如:bcabcbcabcbcabc i
2.8k3 分钟

1504. 统计全 1 子矩形 难度中等 159 给你一个 m x n 的二进制矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 。 示例 1: 输入:mat = [[1,0,1],[1,1,0],[1,1,0]] 输出:13 解释: 有 6 个 1x1 的矩形。 有 2 个 1x2 的矩形。 有 3 个 2x1 的矩形。 有 1 个 2x2 的矩形。 有 1 个 3x1 的矩形。 矩形数目总共 = 6 + 2 + 3 + 1 + 1 = 13 。 示例 2: 输入:mat = [[0,1,1,0],[0,1,1,1],[1
23k21 分钟

操作系统对外部硬件的设备管理 # I/O 设备的基本概念与分类 # 什么是 I/O 设备 “I/O” 就是 “输入 / 输出”(Input/Output) I/O 设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。 UNIX 系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作。 # 按使用特性分类 # 按传输速率分类 # 按信息交换的单元分类 # 整体框架 # I/O 控制器 # I/O 设备的机械部件
46k42 分钟

# 初识文件管理 # 回顾 计算机中存放了各种各样的文件,一个文件有哪些属性? 文件内部\color{red}文件内部文件内部的数据应该怎样组织起来? 文件之间\color{red}文件之间文件之间又应该又应该怎么组织起来? 从下往上看, OS 应提供哪些功能,才能方便用户、应用程序使用文件? 从上往下看,文件数据应该怎么存放在外存(磁盘)上? # 文件的属性 一个文件有哪些属性? 文件名\color{red}文件名文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件\color{red}同一目录下不允许有重名文件同一目录下不允许有重名文件。 标
83k1:15

# 内存的基础知识 # 什么是内存? 内存是用于存放数据的硬件。程序执行前 需要先放到内存中才能被CPU处理。 思考:在多道程序环境下,系统中会有多个程序并发执行,也就是说会有多个程序的数据需要同时放到内存中。 那么,如何区分各个程序的数据是放在什么地方的呢? 方案:给内存的存储单元编地址 内存中也有一个一个的 “小房间”,每个小房间就是一个 “存储单元” 内存地址从 0 开始,每个地址对应一个存储单元 如果计算机 “按字节编址”,则 每个存储单元大小 为 1 字节,即 1B ,即 8 个二进制位 如果 字长为 16 位 的计算机 “按字编址” ,则 每个存储单元大小 为 1个字;每
115k1:44

# 进程的定义、组成、组织方式、特征 整体框架 # 进程的定义 程序\color{red}程序程序:就是一个指令序列 早期的计算机(只支持单道\color{red}单道单道程序) 引入多道\color{red}多道多道程序之后: 为了方便操作操作系统管理,完成各个程序并发执行、 引入了进程、进程实体\color{red}进程、进程实体进程、进程实体的概念 PCB、程序段、数据段三部分构成了 进程实体\color{red}进程实体进程实体(进程映像\color{red}进程映像进程映像) 程序段、数据段、PCB\color{red}程序段、数据段、\texttt{PCB}程序段
20k18 分钟

# 操作系统的概念、功能和目标 整体框架 # 操作系统的层次结构 对于操作系统: 负责管理协调硬件、软件登计算机资源的工作 为上层的应用程序、用户提供简单易用的服务 操作系统是系统软件,而不是硬件 对于裸机(纯硬件): 例如:CPU、内存、硬盘 # 操作系统的定义 操作系统\color{red}操作系统操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源, 并合理地组织调度计算机的工作和资源的分配, 以提供给用户和其他软件方便的接口和环境,(从下往上) 它是计算机系统中最基本的系统软件\color{red}系统软件系统软件。(从上往下)
2.8k3 分钟

952. 按公因数计算最大组件大小 难度困难 给定一个由不同正整数的组成的非空数组 nums ,考虑下面的图: 有 nums.length 个节点,按从 nums[0] 到 nums[nums.length - 1] 标记; 只有当 nums[i] 和 nums[j] 共用一个大于 1 的公因数时, nums[i] 和 nums[j] 之间才有一条边。 返回 图中最大连通组件的大小 。 示例 1: 输入:nums = [4,6,15,35] 输出:4 示例 2: 输入:nums = [20,50,9,63] 输出:2 示例 3:
7.8k7 分钟

2713. 矩阵中严格递增的单元格数 难度困难 给你一个下标从 1 开始、大小为 m x n 的整数矩阵 mat ,你可以选择任一单元格作为 起始单元格 。 从起始单元格出发,你可以移动到 同一行或同一列 中的任何其他单元格,但前提是目标单元格的值 严格大于 当前单元格的值。 你可以多次重复这一过程,从一个单元格移动到另一个单元格,直到无法再进行任何移动。 请你找出从某个单元开始访问矩阵所能访问的 单元格的最大数量 。 返回一个表示可访问单元格最大数量的整数。 示例 1: 输入:mat = [[3,1],[3,4]] 输出:2 解释:上图展示了从第 1 行、第 2 列的单元
4.1k4 分钟

2712. 使所有字符相等的最小成本 难度中等 给你一个下标从 0 开始、长度为 n 的二进制字符串 s ,你可以对其执行两种操作: 选中一个下标 i 并且反转从下标 0 到下标 i (包括下标 0 和下标 i )的所有字符,成本为 i + 1 。 选中一个下标 i 并且反转从下标 i 到下标 n - 1 (包括下标 i 和下标 n - 1 )的所有字符,成本为 n - i 。 返回使字符串内所有字符 相等 需要的 最小成本 。 反转 字符意味着:如果原来的值是 '0' ,则反转后值变为 '1' ,反之亦然