Day03 | 数组 有序数组的平方&&长度最小的子数组
##代码随想录 | Day03 | 数组:有序数组的平方&&长度最小的子数组 主要学习内容: 1.双指针对数组进行操作 2.滑动窗口的一些关键点: 窗口前端后移的情况和条件 977.有序数组的平方977. 有序数组的平方 - 力扣(LeetCode) 当然要使用全都平方再sort的方法啦(bushi 解法:双指针可以按照三个指针来理解 快慢指针定义: 快指针r:指向正数最大值 慢指针s:指向负数绝对值最大值 第三个指针是循环变量i,是新数组的下标 思路:快指针指向末尾元素,即正数最大值,慢指针指向首元素,即负数绝对值最大的,快指针所指向的和慢指针所指向的作比较,更大的填写到i所指向的位置,选择了那个指针的值,则那个指针进行移动,另外一个则不动 123456789101112131415161718192021class Solution {public: vector<int> sortedSquares(vector<int>& nums) { int...
Day02 |C++ | 数组 移除元素&&删除有序数组中的重复项&&移动零&&比较含退格的字符串
##代码随想录 | 刷题记录 | Day02 |C++ | 数组 移除元素&&删除有序数组中的重复项&&移动零&&比较含退格的字符串 27.移除元素27. 移除元素 - 力扣(LeetCode) 解题思路一:暴力解法碰到val就一个一个挨着移动到val将val覆盖 123456789101112131415161718192021222324252627282930313233343536class Solution {public: int removeElement(vector<int>& nums, int val) { int res=0;//记录val数量 for(int i=0;i<nums.size()-res;i++) { if(nums[i]==val)//发现一样的 { for(int...
Day01 |C++ | 二分查找 二分查找&&搜索插入位置&&在排序数组中查找元素的第一个和最后一个位置&&x的平方根&&有效的完全平方数
代码随想录 | Day01 |C++二分查找####1 找到就行 适用于没有重复数 123456789/*关键点:1.while(l<r) or while(l<=r)2.r or l == mid+1 or mid-1 or mid3.如果为了防止mid太大的话可以选择 mid=l+(r-l)/2;主要取决于边界,分为两种第一种是左闭右闭,第二种是左闭右开*/ 1234567891011121314151617181920212223242526272829//第一种//左闭右闭 区间 l<=r 因为r==l时 [l,r]是合法的,只有一个数字 eg:[1,1] 区间内有一个元素为1//判断是等于mid+1或者-1要看到底是不是l和r在你接下来搜索的区间内//这个如果有重复元素的话有随机性,可能找到左边界可能找到右边界可能找到左右边界中间的某个数int search(vector<int>& nums, int target) { int l=0,r=nums.size()-1; ...
王道操作系统 5.3 磁盘和固态硬盘
5.3 磁盘和固态硬盘5.3.1 磁盘磁盘是可共享设备,但每个时刻至多能由一个作业启动它 磁盘结构 磁盘:磁盘的表面由一些磁性物质组成,可以用这些磁性物质来记录二进制数据 磁道:磁盘的盘面被划分成一个个磁道。这样的一个“圈”就是一个磁道 扇区:一个磁道又被划分成一个个扇区,每个扇区就是一个“磁盘块”各个扇区存放的数据量相同 最内侧磁道上的扇区面积最小,因此数据密度最大 盘面:磁盘有多个盘片”摞”起来,每个盘片有两个盘面。 柱面:所有盘面中相对位置相同的磁道组成柱面。 如何在磁盘中读/写数据 磁盘的物理地址:磁盘地址用“柱面号•盘面号•扇区号”表示,可根据该地址读取一个“块” 磁盘的分类 磁头是否移动 根据盘片是否可更换 5.3.2 磁盘管理 磁盘的操作系统引导扇区产生在 对硬盘进行高级格式化的时候 磁盘初始化 一个新的磁盘只是一个磁性记录材料的空白盘。在磁盘可以存储数据之前,必须将它分成扇区,以便磁盘控制器能够进行读写操作,这个过程称为低级格式化(或称物理格式化)。 ...
王道操作系统 5.2 设备独立性软件
5.2 设备独立性软件设备独立性是指用户编程时使用的设备与实际使用的设备无关 IO核心子系统 核心子系统在开机时就调入了内存的内核区 磁盘IO也属于IO调度问题 5.2.1 与设备无关的软件 与设备无关的软件是I/O系统的最高层软件,它的下层是设备驱动程序。 设备保护: 操作系统需要实现文件保护功能,不同的用户对各个文件有不同的访问权限(如:只读、读和写等) 在UNIX系统中,设备被看做是一种特殊的文件,每个设备也会有对应的FCB。当用户请求访问某个设备时,系统根据FCB中记录的信息来判断该用户是否有相应的访问权限,以此实现“设备保护”的功能。 5.2.2 高速缓存与缓冲区引入高速缓冲的主要目的是改善CPU与设备速度不匹配的问题 缓冲区一般都开在内存 缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可以利用内存实现 磁盘高速缓存(Disk Cache) 操作系统中使用磁盘高速缓存技术来提高磁盘的I/O速度,对访问高速缓存要比访问原始磁盘数据更为高效。 ...
王道操作系统 5.1 I/O管理概述
5.1 I/O管理概述设备的读写本质是在设备控制器(IO接口)和主机之间传送数据 5.1.1...
王道操作系统 4.2 目录
4.2 目录 4.2.1 目录的基本概念 **文件目录指FCB的有序集合,一个FCB就是一个文件的目录项。**与文件管理系统和文件集合相关联的是文件目录,它包含有关文件的属性、位置和所有权等。 目录管理的基本要求: 从用户的角度看,目录在用户(应用程序)所需要的文件名和文件之间提供一种映射,所以目录管理要实现“按名存取”; 目录存取的效率直接影响到系统的性能,所以要提高对目录的检索速度; 在多用户系统中,应允许多个用户共享一个文件,因此目录还需要提供用于控制访问文件的信息。 此外,应允许不同用户对不同文件采用相同的名字,以便于用户按自己的习惯给文件命名,目录管理通过树形结构来解决和实现。 4.2.2 目录结构 FCB和索引节点在...
王道操作系统 4.3 文件系统
4.3 文件系统 4.3.1 文件系统结构 文件系统(File system)提供高效和便捷的磁盘访问,以便允许存储、定位、提取数据。 4.3.2...
王道操作系统 4.1 文件系统基础
4.文件管理4.1 文件系统基础4.1.1 文件的基本概念 1.定义 文件是以计算机硬盘为载体的存储在计算机上的信息集合,在用户进行的输入、输出中,以文件位基本单位。 文件管理系统是实现的文件的访问、修改和保存,对文件维护管理的系统。 文件的结构 数据项:是文件系统中最低级的数据组织形式,可分为以下两种类型: 基本数据项:用于描述一个对象的某种属性的一个值,是数据中的最小逻辑单位。 组合数据项:由多个基本数据项组成。 记录:是一组相关的数据项的集合,用于描述一个对象在某方面的属性。 文件:是指由创建者所定义的、具有文件名的一组相关元素的集合,分为有结构文件和无结构文件两种。 在有结构的文件中,文件由若干个相似的记录组成,如一个班的学生记录; 4.1.2...
王道操作系统 3.1 内存管理概念
3 内存管理3.1 内存管理概念3.1.1 内存管理的基本原理和要求 内存可以存放数据,程序执行前需要先放到内存中才能被CPU处理—缓和cpu和磁盘之间的速度矛盾 内存管理的概念 虽然计算机技术飞速发展,内存容量也在不断扩大,但仍然不可能将所有用户进程和系统所需的全部程序与数据放入内存,因此操作系统对内存空间进行合理的划分和有效的动态分配。操作系统对内存的划分和动态分配,就是内存管理的概念。 内存空间的主要功能有: ① 内存空间的分配与回收:OS 要怎么记录哪些内存区域已经被分配出去了,哪些又还空闲;当进程运行结束之后,如何将进程占用的内存空间回收。 ② 内存空间的扩充:OS 利用虚拟内存技术或自动覆盖技术使得系统运行很大的程序,从逻辑上扩充内存。 ③ 地址转换:为了使编程更方便,程序员写程序时应该只需要关注指令、数据的逻辑地址。而 逻辑地址到物理地址的转换(这个过程称为地址重定位)应该由操作系统负责,其中地址重定位有三种方式。 ④...