- 博客(16)
- 收藏
- 关注
原创 [LC] 12/23 滑动窗口,dp
你可以从某一起始索引出发,跳跃一定次数。在你跳跃的过程中,第 1、3、5... 次跳跃称为奇数跳跃,而第 2、4、6... 次跳跃称为偶数跳跃。如果从某一索引开始跳跃一定次数(可能是 0 次或多次),就可以到达数组的末尾(索引。在进行偶数跳跃时(如,第 2,4,6... 次跳跃),你将会跳到索引。在进行奇数跳跃时(如,第 1,3,5... 次跳跃),你将会跳到索引。指的是一个数组中一段连续非空的元素序列。),那么该索引就会被认为是好的起始索引。,可能无法进行合乎要求的跳跃。返回好的起始索引的数量。
2025-12-23 17:30:22
223
原创 [dsa] 排序
经典Hoare划分法另一种选举候选轴点的方法,也称三路划分:将数组划分为四个区域:V[lo]:轴点 L = V(lo, mi]:小于轴点的元素 G = V(mi, k):大于等于轴点的元素 U = V[k, hi]:未处理元素初始化mi = lo, k = lo + 1 遍历k从lo+1到hi:如果V[k] < pivot:扩展L区间(mi++后交换)否则:扩展G区间(仅k++)将轴点放到mi位置递归排序左右子数组。
2025-10-22 16:22:48
831
原创 [dsa] 高级搜索树
与前一章的AVL树一样,伸展树(splay tree)也是平衡二叉搜索树的一种形式。相对于前者,后者的实现更为简捷。伸展树无需时刻都严格地保持全树的平衡,但却能够在任何足够长的真实操作序列中,保持分摊意义上的高效率。伸展树也不需要对基本的二叉树节点结构,做任何附加的要求或改动,更不需要记录平衡因子或高度之类的额外信息,故适用范围更广。一种直接方式是:每访问过一个节点之后,随即反复地以它的父节点为轴,经适当的旋转将其提升一层,直至最终成为树根。目前的策略仍存在致命的缺陷——对于很多访问序列,单次访问的分摊时间
2025-10-16 11:48:29
671
原创 [dsa] ch1
如果 n>0,调用 Ackermann(m, n - 1),而 (m,n−1)<(m,n),由归纳假设终止;比如,对于 f(n)=nlogn=O(n2)f(n)=nlogn=O(n2) 和 g(n)=1=O(n)g(n)=1=O(n) ,有 f(n)/g(n)=nlogn≠O(n)f(n)/g(n)=nlogn=O(n)比如,对于 f(n)=logn=O(n2)f(n)=logn=O(n2) 和 g(n)=n=O(n)g(n)=n=O(n) ,有 g(n)≠O(f(n))g(n)=O(f(n))
2025-10-09 15:10:18
609
原创 [linux] 大物理内存
多年前,当16位(或20位)的地址空间还作为标准的时候,机器已有兆字节的物理内存,人们努力想出各种技术使得程序可以使用更多的物理内存、而不是去适应有限的地址空间。这些技术通常基于存储器组转换(bank switching),使得一个程序可以突破16或者20位的限制,替换掉自己的一些内存块。在刚引入32位计算机时,大多数桌面计算机只有几个兆的物理内存。然而随着内存在集成电路上变得更加密集,可用内存开始迅速增长。这推动了服务器的发展,因为服务器上的应用程序往往需要更多的内存。
2025-09-30 09:44:01
528
原创 [操作系统]死锁
我们把这类需要排他性使用的对象称为资源(resource)。资源可以是硬件设备(如磁带机)或是一组信息(如数据库中一个加锁的记录)。通常在计算机中有多种(可获取的)资源。简单来说,资源就是随着时间的推移,必须能获得、使用以及释放的任何东西。资源分为两类:可抢占的和不可抢占的。
2025-09-28 16:41:19
1672
原创 [进程管理] 线程
不过,线程与进程有一个关键的差别。在线程完成运行时,例如,在它调用thread_yield时,pthread_yield代码可以把该线程的信息保存在线程表中,进而,它可以调用线程调度程序来选择另一个要运行的线程。保存该线程状态的过程和调度程序都只是本地过程,所以启动它们比进行内核调用效率更高。另一方面,不需要陷阱,不需要上下文切换,也不需要对内存高速缓存进行刷新,这就使得线程调度非常快捷。尽管用户级线程包有更好的性能,但它也存在一些明显的问题。其中第一个问题是如何实现阻塞系统调用。
2025-09-26 14:50:09
1837
原创 [csapp] 第九章 虚拟内存
为了更有效的管理内存并且少出错,现代系统提供了一种对主存的抽象概念,叫做虚拟内存(VM)。虚拟内存提供了三个重要的能力:1.将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保留活动区域,并根据需要在磁盘和主存间来回传送数据。2.为每个进程提供了一致的地址空间,从而简化内存管理。3.它保护了每个进程的地址空间不被其他进程破坏。这一章从两个角度来看虚拟内存。前一部分描述虚拟内存是如何工作的,后一部分描述的是应用程序如何使用和管理虚拟内存。
2023-11-19 11:02:50
466
1
原创 [csapp] 第八章 异常控制流
程序计数器假设是a的序列。每个ak是某个相应指令Ik的地址。从ak到ak+1的过渡称为控制转移。这种控制转移序列叫做处理器的控制流。线代系统通过使控制流发生突变来对某些情况做出反应。我们把这些突变称为异常控制流(ECF)。
2023-11-14 21:27:08
311
1
原创 QT 音乐播放器代码阅读笔记 /待写
Qsettings: 类似软件的ini文件,保存初始设置。这里利用Qsetting读取ini文件. Qsetting::iniformat 是Qsetting 读写*.QStackedWidget没有提供内建方法用于页面之间的切换。获得ini文件参数中的background/image-url,利用qss设置成背景图。QStackedWidget提供了一个控件栈,在这个栈中,一次只能显示一个控件。QStackedWidget可以提供与QTabWidget类似的用户接口。
2023-04-22 11:05:22
175
原创 windows 下安装rails的问题
可能是rails默认在Gemfile生成的是"gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]",此时只需要保留gem 'tzinfo-data' ,后面的platforms: [:mingw, :mswin, :x64_mingw, :jruby]"删掉。3. rails s重启即可。
2022-12-14 17:44:07
284
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅