这是我参与「第四届青训营 」笔记创作活动的的第15天
web.eecs.umich.edu/~sugih/cour…
The Book of Shaders
Mesh.js
glsl-doodle
SpriteJS
ThreeJS
ShaderToy
剑指 Offer 32 - II. 从上到下打印二叉树 II
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
提示:
节点总数 <= 1000
注意:本题与主站 102 题相同:leetcode-cn.com/problems/bi…
var levelOrder = function(root) {
const ret = [];
if (!root) {
return ret;
}
const q = [];
q.push(root);//初始队列
while (q.length !== 0) {
const currentLevelSize = q.length;//当前层节点的数量
ret.push([]);//新的层推入数组
for (let i = 1; i <= currentLevelSize; ++i) {//循环当前层的节点
const node = q.shift();
ret[ret.length - 1].push(node.val);//推入当前层的数组
if (node.left) q.push(node.left);//检查左节点,存在左节点就继续加入队列
if (node.right) q.push(node.right);//检查左右节点,存在右节点就继续加入队列
}
}
return ret;
};
theme: smartblue
1. CPU的调度分为高级,中级和低级三种,其中低级调度是指?
高级调度是作业调度;中级调度是交换调度;低级调度是进程调度
2. 以下代码执行后,result的值变成什么?
var result=0;
function test(result){
result=1;
}
test(2);
答案:0
解释:result在方法内作为形参它的作用域仅限于这个方法,因此方法内的result=1并不会更改外界的result值
3. 以下代码执行后,result的值是什么?
function Test(name) { }
Test.name='Tom';
Test.prototype.name="John";
var result = (new Test('JK')).name;
答案:John
解释:实例化的对象从原型链上去找的name
不选Tom的原因是, 在ES5语法里, 构造函数的属性和方法必须放到函数的原型上, 实例才继承得到.
不选JK的原因是, 而后面实例里传的实参 'JK' ,在实例里没有变量接收, 等于没有实参使用, 必须在构造函数里this.name=name 接收好实参传递的值才行, 就像这样:
function Test(name) {
this.name = name
}
不选undefined的原因是, 原型里有对应的变量, 实例就会直接调原型的变量
4. 变量el为一个 <div class="a">元素,哪段代码能得到其滚动内容的高度( )
答案:el.scrollHeight
解释:ScrollHeight滚动内容高度。clientHeight可视内容高度 ScrollTop滚动过的高度
scrollHeight不是样式,是元素的属性
5. 对于有n 个结点的二叉树, 其高度为( )
答案:unknown
一棵二叉树有n个元素,n>0,它的高度最大为n,最小高度为[log2n]+1。
6. 操作系统相关算法
最佳置换算法(OPT) (理想置换算法):从主存中移出永远不再需要的页面;如无这样的页面存在,则选择最长时间不需要访问的页面。于所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。
最佳置换算法可以用来评价其他算法。假定系统为某进程分配了三个物理块,并考虑有以下页面号引用串:
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1
进程运行时,先将7, 0, 1三个页面依次装入内存。进程要访问页面2时,产生缺页中断,根据最佳置换算法,选择第18次访问才需调入的页面7予以淘汰。然后,访问页面0时,因为已在内存中所以不必产生缺页中断。访问页面3时又会根据最佳置换算法将页面1淘汰
先进先出置换算法(FIFO) :是最简单的页面置换算法。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。其理由是:最早调入主存的页面不再被使用的可能性最大。
最近最久未使用(LRU)算法: 这种算法的基本思想是:利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。所以,这种算法的实质是:当需要淘汰一个页面时,总是选择在最近一段时间内最久不用的页面予以淘汰。再对上面的实例釆用LRU算法进行页面置换