10 2020 档案
摘要:假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 链接: leetcode. 解题思路:先对数组进行排序,身高为逆序,对于身高相同的元素,大于等于自己的人数为顺序。身高越大的元素
阅读全文
摘要:树状排列问题 链接: leetcode. 解题思路:动态规划,利用两个哈希表,一个表示偷当前节点,另一个表示不透当前节点的最大收益。状态转移,偷当前节点的状态,由两个子节点的不偷状态加上当前节点值组成,不偷当前节点的状态,由不偷或者偷子节点的最大值转化过来。 /** * Definition for
阅读全文
摘要:文章目录 概述文件和文件系统文件结构文件管理系统文件系统架构 文件组织和访问堆顺序文件索引顺序文件索引文件直接文件或散列文件 文件目录内容结构命名 文件共享访问权限同时访问 记录组块二级存储管理文件分配预分配与动态分配分区大小文件分配方法 卷可靠性 Linux虚拟文件系统 概述 文件和文件系统 文件
阅读全文
摘要:有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的
阅读全文
摘要:无限次买卖 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 链接: leetcode. 解题思路:一次遍历,手里先握着一
阅读全文
摘要:给定一个无序的整数数组,找到其中最长上升子序列的长度。 输入: [10,9,2,5,3,7,101,18] 输出: 4 纯DP 解体思路:利用动态规划的方法,从一个方向遍历数组,每次获取以该位置为子序列结尾的长度。状态表示,利用数组f分别表示以该位结尾的最长上升子序列;状态转移,像前遍历,如果前者比
阅读全文
摘要:设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。 解题思路: 根据二叉树的遍历思想,只要将空节点的表示符号写入字符串,就能根据二叉树的某种遍历,构造出唯一的树。这里通过二叉
阅读全文
摘要:文章目录 I/O设备I/O功能组织直接存储器访问 操作系统设计问题设计目标IO功能的逻辑结构 I/O缓冲单缓冲双缓冲循环缓冲缓冲的作用 磁盘调度磁盘性能参数磁盘调度策略先进先出优先级后进先出最短服务时间优先SCANC-SCANN-step-SCAN 磁盘高速缓存设计考虑 UNIX I/O I/O设备
阅读全文
摘要:在未排序的数组中找到第 k 个最大的元素。 链接: leetcode. 解题思路:通过快速排序的思想方法,每次随机获取指定范围内一个树的排序位置,然后根据这个位置,再重新指定范围,直到这个位置索引满足K。 class Solution { public int findKthLargest(int[
阅读全文
摘要:多处理器调度 粒度 一种描述多处理器并把它们和其他结构放置在一个上下文环境中的一种比较好的方法是,考虑系统中进程之间的同步粒度,又或者说同步频率。不同粒度的划分依据是同步指令间隔。 进程调度 有多条基于优先级的队列,并且都送进相同的处理器池中,可以把系统看作多服务器排队结构。 线程调度 在多处理器线
阅读全文
摘要:处理器调度类型 分为三个独立的功能:长程、中程和短程调度。它们的名字表明指向这些功能的相对时间比例。 创建新进程时,执行长程调度,它决定是否把进程添加进当前活跃的进程集合中。中程调度是交换功能的一部分,它决定是否把进程添加进那些至少部分存在内存并且可以被执行的进程集合中。短程调度真正决定下一次执行哪
阅读全文
摘要:文章目录 内存管理的需求重定位保护共享逻辑组织物理组织 内存分区固定分区动态分区伙伴系统重定位 分页分段安全问题缓冲区溢出攻击 内存管理的需求 重定位 当进程在内存和磁盘中交换的时候,需要通过重定位将进程放到内存的不同区域。 处理器和操作系统通过某种方式吧代码中的内存访问转换成物理内存的地址,并反映
阅读全文
摘要:实现一个 Trie (前缀树),包含 插入, 查询, 和 查询前缀这三个操作。 Trie trie = new Trie(); trie.insert(“apple”); trie.search(“apple”); // 返回 true trie.search(“app”); // 返回 false
阅读全文
摘要:你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1] 给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习? 2, [[1,
阅读全文
摘要:给定一个乱序的链表,要求将链表进行排序后然后返回头结点,要求时间复杂度为 O(nlogn)。 leetcode 由于无法快速得到链表中某一节点得值,时间复杂度为 O(nlogn),所以,通过归并排序。归并的核心思想是将数据分为两段有序的数据,再进行合并。归并的程序设计上可以由递归和迭代两种方法,迭代
阅读全文
摘要:普通链表的节点由节点值和指向下一个节点的指针组成。双向链表顾名思义,节点中多一个指针可以指向前一个节点。 优点:可以得到前节点,这样在只有当前节点的情况下,可以删除本节点。 构造思想:链表中存在一个头节点和一个尾节点,向头添加节点的时候,将被添加的节点下一个指针指向头节点的下一个节点,然后只需要把头
阅读全文
摘要:给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 输入: s = “applepenapple”, wordDict = [“apple”, “
阅读全文
摘要:文章目录 死锁原理死锁预防互斥占有且等待不可抢占循环等待 死锁避免死锁检测哲学家就餐问题Linux内核并发机制原子操作自旋锁信号量屏障 死锁原理 可以把死锁定义为一组相互竞争系统资源或进行通信的进程间的永久阻塞。 死锁由四个必要条件: 互斥占有且等待不可抢占循环等待 死锁预防 本质是试图设计一种系统
阅读全文
摘要:文章目录 并发的原理进程间的资源竞争进程间通过共享合作进程间通过通信合作互斥的要求 互斥:硬件的支持中断禁用专用机器指令信号量互斥生产者消费者问题 管程消息传递 并发的原理 在单处理多道程序设计系统中,进程交替执行,表现出一种同时执行的外部特征。在多处理器系统中,不仅可以交替执行进程,而且可以重叠执
阅读全文
摘要:线程和进程 线程是资源分配的基本单位、线程是调度的基本单位 进程的概念包括两个特点: 资源所有权:一个进程包括一个存放进程映像的虚拟地址空间,进程映像是程序、数据、栈和进程控制块中定义的属性的集合。一个进程拥有对资源的控制权和所有权,操作系统保护进程之间的资源不起冲突。调度/执行:一个进程具有一个执
阅读全文
摘要:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 示例: 给你这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2->1->4->3->5 当 k
阅读全文
摘要:文章目录 什么是进程进程和进程控制块 进程状态两状态进程模型进程的创建和终止五状态模型被挂起的进程 进程描述进程控制进程创建进程切换 现代操作系统最基础的任务就是进程管理。 什么是进程 开发操作系统是为了给应用程序提供一个方便、安全和一致的接口。 进程和进程控制块 上一章对进程的定义: 一个正在执行
阅读全文
摘要:文章目录 目标和功能发展串行处理简单批处理系统多道程序设计批处理系统分时系统 主要成就进程内存管理信息保护和安全系统结构 现代操作系统的特征 目标和功能 操作系统是控制应用程序执行的程序,并充当应用程序和计算机硬件之间的接口。 三个目标:方便、有效、扩展能力。 发展 串行处理 用户必须顺序访问计算机
阅读全文

浙公网安备 33010602011771号