摘要:
牛客网: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 解题思路:这里如果用递归的话时间复杂度和空间复杂度都会很高 function Fibonacci(n){ if(n == 0 || n == 1) { return n } 阅读全文
摘要:
watch方法 也叫用户Watcher,是通过new Watcher产生的一个实例。 new Watcher的时候会执行get方法,get方法会将当前用户Wathcer放入Dep.target中,然后执行getter方法,去实例上取值,取值就会调用get方法,进行依赖收集,当值发生变化了就调用wat 阅读全文
摘要:
假设页面有四个地方需要更新属性,那我们希望不要更新四次,而是一次性更新。 防止不停的更新 把需要更新的watcher先存起来 放进一个异步队列 把重复的watcher过滤掉 等待这轮更新完就清空队列 就是说等待主执行栈执行完了就执行异步任务,也可以理解为页面所有属性都赋值完再执行这个异步方法 /** 阅读全文
摘要:
首先明确为什么药依赖收集?是为了当数据的属性发生了更改之后可以通知那些曾经使用了数据的地方。 对象依赖收集的过程:初始化的时候,会给每一个数据定义响应式,同时会给每一个属性一个new Dep(),每一个dep 有一个 唯一标识id,这个Dep就是用来收集依赖的, 然后当页面取值的时候会调用get方法 阅读全文
摘要:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路:由于栈是后进先出,所以先依次进入栈1,再从栈1依次弹出到栈2,这样栈1和栈2元素的顺序就正好相反了,然后弹出栈2顶部的元素,就完成了一个先进先出的过程。 维护两个栈 stack1 和 stack2,其中 st 阅读全文
摘要:
产生原因 在 iOS 中,手指按住屏幕上下拖动,会触发 touchmove 事件。这个事件触发的对象是整个 webview 容器,容器自然会被拖动,剩下的部分会成空白。 在 W3C 文档中说 touchmove 事件的速度是可以实现定义的,取决于硬件性能和其他实现细节 preventDefault 阅读全文
摘要:
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 思路:第一个遍历的节点,最后输出,最后一个遍历的先输出,可以利用数组,每次遍历将值存入一个数组,然后反转数组,或者是用栈存入然后再输出,后进先出。 数组实现: var reversePrint = function(head) { va 阅读全文
摘要:
矩阵是有序的,从左下角来看,向上数字递减,向右数字递增,因此从左下角开始查找,当要查找数字比左下角数字大时,右移,要查找数字比左下角数字小时,上移 function Find (array, target) { let row = array.lenghth //行 let col = array[ 阅读全文
摘要:
一、利用position的sticky属性 sticky页面不动的情况下,它就像 position:relative;而当页面滚动超出目标区域时,它表现的就像 position:fixed;,会固定在目标位置。 relative(相对定位)是指给元素设置相对于原本位置的定位,元素并不脱离文档流,因此 阅读全文
摘要:
归并排序采用的是分治的思想,首先是“分”,将一个数组反复二分为两个小数组,直到每个数组只有一个元素;其次是“治”,从最小数组开始,两两按大小顺序合并,直到并为原始数组大小,下面是图解: 分”就是将原始数组逐次二分,直到每个数组只剩一个元素,一个元素的数组自然是有序的,所以就可以开始“治”的过程了。 阅读全文