589. N 叉树的前序遍历
更多146. LRU 缓存机制
前言 今天在刷leetcode的时候,遇到了LRU缓存机制的问题。觉得很有意思,就准备把这道题的题解以及相关知识点记录下来。 原题是这样的 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。 写入数据 put(key, value) - 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字/值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。 结合实际场景来分析这道题的话就是我们现在有一个空间有限的缓存池,为了保证缓存不会溢出我..
更多计算机的基本组成
一、计算机系统概论 冯诺依曼计算机组成 主机(cpu+内存),外设(输入设备+输出设备+外存),总线(地址总线+数据总线+控制总线) 计算机层次结构 应用程序-高级语言-汇编语言-操作系统-指令集架构层-微代码层-硬件逻辑层 计算机性能指标 非时间指标 【字长】机器一次能处理的二进制位数 ,常见的有32位或64位 【总线宽度】数据总线一次能并行处理的最大信息位数,一般指运算器与存储器之间的数据总线的位数 【主存容量】主存的大小 【存储带宽】单位时间内与主存交换的二进制位数 B/s 时间指标 【主频f】时钟震荡的频率 Hz;【时钟周期T】时钟震荡一次的时间 t 【外频】cpu与主板之间同步的时钟频率,系统总线的工作频率;【倍频】主频与外频的倍数 =主频/外频 【CPI】clock cycles p..
更多横扫offer笔记 面向对象
不可变数据类型是永远不会被改变的。 const int i = 0; //指定变量i为不可变常量 int * j = (int *)&i; //强行将j的指针指向常变量i, &i指的是得到变量i的内存地址 * j = 1; printf("%d %d", i, *j) 最终得到0,1 因为i是常变量(不可改变的变量),所以即使指针变量j指向了i的地址之后重新赋值。这个时候内存会为常变量开辟一个新的内存地址来存储原始值0,并且在输出的时候使用的还是原来的值。 *j指的是这个指针变量所指向的值,也就是它所存储的内存地址,通过该地址找到的值 如果这个时候输出j,那么将打印出*j中存储的内存地址 在16位机器上,下面这段代码输出结果: int i = 65536; ..
更多横扫offer笔记 C++基础
基本运算 C语言中,以数字0开头的是八进制形式,以0x或0X开头的是十六进制形式,常数的后面加字母L为长整数. %hd用来输出 short int 类型,hd 是 short decimal 的简写; %d用来输出 int 类型,d 是 decimal 的简写; %ld用来输出 long int 类型,ld 是 long decimal 的简写。 浮点数:在高级语言程序设计中,对于两个浮点类型的变量x,y一般不直接使用语句if(x==y)。因为在计算机中浮点数不一定会被精确显示,特别是小数点后三位之后。所以一般我们判断两个浮点数是否相等时需要这样写:|x-y| > 0.000001 unsigned int a = 6 表示的是无符号整数 取值范围是
更多Python面试题四
Python中类方法、类实例方法、静态方法有何区别? 实例方法:类的实例化对象的方法,参数是self,指向该类的实例。通过self可以自由的调用该对象的属性和其它方法,也可以修改。 类方法:使用@classmethod装饰器的类方法,参数为cls,不同于实例方法,cls不能对类中的属性做修改 静态方法:使用@staticmethod装饰器的类方法,不接受cls和self,但是可以接受其它参数。所以它不能访问该类的属性和方法,只能访问该类中的全局变量。 参考链接 请描述抽象类和接口类的区别和联系 举个简单的例子,你需要设计一个关于汽车的类。为了便于以后的扩展,我们把汽车的基本功能放入到抽象类中去,如行驶,倒车,转弯这些方法,车灯,轮胎等属性。 突然我们开发出了一台支持自动驾驶的车,因为这个功能不是每..
更多Http学习笔记
根据上野宣的《图解HTTP》整理的个人学习笔记,记录重点与配图 计算机网络体系结构 具有五层协议的体系结构 一般提到计算机网络体系结构,都指的是五层协议。七层协议虽然足够完整,但是过于复杂而且不实用。 应用层 应用层决定了向用户提供应用服务时通信的活动。 TCP/IP协议族内预存了各类通用的应用服务。比如FTP(File Transfer Protocol, 文件传输协议) 和 DNS(Domain Name System, 域名系统)服务就是其中两类。 传输层 传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。 在传输层有两个性质不同的协议,TCP(Transmission Control Protocol, 传输控制协议) 和 UDP (User Data Protocol..
更多Python面试题(二)
列出python中可变数据类型和不可变数据类型,并简述原理 不可变类型:字符串str, 数值类型int, 元组tuple In [1]: a = 3 In [2]: b = 3 In [3]: id(a) Out[3]: 4494963920 In [4]: id(b) Out[4]: 4494963920 不可变类型指的是数据不允许发生变化,如果改变变量的值就只能重新创建新的对象会重新分配内存地址,所以它的id将会有所改变。 In [5]: a = 4 In [6]: id(a) Out[6]: 4494963952 可变类型:列表list和字典dict 也就是说如果对变量进行append、 +=等操作它只会改变变量的值,不会改变内存地址。对于相同值的不同对象也会占用不同的内存地址。 In..
更多Python面试题
一行代码实现1-100之和 sum(range(100)) 如何在一个函数内部修改全局变量 In [1]: c = 0 In [3]: def change_count(): ...: global c ...: c = 1 ...: print(c) ...: In [4]: change_count() 1 In [5]: c Out[5]: 1 列出5个python标准库 os: 提供操作系统有关的函数 sys: 通常用于命令行参数 re: 正则匹配 math: 数学运算 datetime: 处理日期时间 字典如何删除键和合并两个字典 删除: del dic['key'] 合并: In [1]: dic1 = {&..
更多浅谈Python中类方法、实例方法和静态方法的区别
更多