面
来源:互联网 发布:js 设置div class 编辑:程序博客网 时间:2024/04/25 09:04
readyState的五个状态
0 初始化
1 载入
2 载入完成
3 交互
4 完成
自定义事件
var Event = { _listeners: {}, // 添加 addEvent: function(type, fn) { if (typeof this._listeners[type] === "undefined") { this._listeners[type] = []; } if (typeof fn === "function") { this._listeners[type].push(fn); } return this; }, // 触发 fireEvent: function(type) { var arrayEvent = this._listeners[type]; if (arrayEvent instanceof Array) { for (var i=0, length=arrayEvent.length; i<length; i+=1) { if (typeof arrayEvent[i] === "function") { arrayEvent[i]({ type: type }); } } } return this; }, // 删除 removeEvent: function(type, fn) { var arrayEvent = this._listeners[type]; if (typeof type === "string" && arrayEvent instanceof Array) { if (typeof fn === "function") { // 清除当前type类型事件下对应fn方法 for (var i=0, length=arrayEvent.length; i<length; i+=1){ if (arrayEvent[i] === fn){ this._listeners[type].splice(i, 1); break; } } } else { // 如果仅仅参数type, 或参数fn邪魔外道,则所有type类型事件清除 delete this._listeners[type]; } } return this; }};
最大深度
int MaxDepth ( TreeNode* root ) { int depth = 0; if ( root ) { int ldepth = MaxDepth ( root -> left ); int rdepth = MaxDepth ( root -> right ); depth = ( ldepth > rdepth ) ? ldepth + 1 : rdepth + 1; } return depth;}
最小深度
int MinDepth(TreeNode* root) { if (root == nullptr) return 0; int l = MinDepth(root->left); int r = MinDepth(root->right); if (l==0 || r==0) { return l+r+1; } return (l<r?l:r)+1;}
堆排序
function AdjustHeap(arr, pos, len){ var swap = arr[pos]; //保存当前节点 var child = pos * 2 + 1; //定位到当前节点的左边的子节点 while(child < len){ //递归遍历所有的子节点 //判断当前节点是否有右节点,若右节点较大,就采用右节点和当前节点进行比较 if(child + 1 < len && arr[child] < arr[child + 1]){ child += 1; } //比较当前节点和最大的子节点,小于就交换,交换后将当前节点定位到子节点上 if(arr[pos] < arr[child]){ arr[pos] = arr[child]; pos = child; child = pos * 2 + 1; } else{ break; } arr[pos] = swap; }}/* 构建堆:* 满足:树中任一非叶子结点的关键字均不大于(或不小于)其左右孩子结点的关键字。* 实现:从最后一个拥有子节点的节点开始,将该节点和其他节点进行比较,将最大的数交换给该节点,* 交换后再依次向前节点进行相同的交换处理,直到构建出大顶堆。*/function BuildHeap(arr){ for(var i=arr.length/2; i>=0; i--){ //构建打顶堆 console.log(i) AdjustHeap(arr, i, arr.length); }}/*堆排序算法*/function HeapSort(arr){ BuildHeap(arr); //构建堆 for(var i=arr.length-1; i>0; i--){ //从数组的尾部进行调整 var swap = arr[i]; //堆顶永远是最大的元素,将堆顶和尾部元素交换,最大元素就保存在尾部,并且不参与后面的调整 arr[i] = arr[0]; arr[0] = swap; AdjustHeap(arr, 0, i); //将最大的元素进行调整,将最大的元素调整到堆顶 }}var arr = [46,12,33,72,68,19,80,33,9];console.log('before: ' + arr);HeapSort(arr);console.log(' after: ' + arr);
document.compatMode
BackCompat:标准兼容模式关闭。CSS1Compat:标准兼容模式开启。当document.compatMode等于BackCompat时,浏览器客户区宽度是document.body.clientWidth;当document.compatMode等于CSS1Compat时,浏览器客户区宽度是document.documentElement.clientWidth。浏览器客户区高度、滚动条高度、滚动条的Left、滚动条的Top等等都是上面的情况。一个准确获取网页客户区的宽高、滚动条宽高、滚动条Left和Top的代码:if (document.compatMode == "BackCompat") { cWidth = document.body.clientWidth; cHeight = document.body.clientHeight; sWidth = document.body.scrollWidth; sHeight = document.body.scrollHeight; sLeft = document.body.scrollLeft; sTop = document.body.scrollTop;}else { //document.compatMode == "CSS1Compat" cWidth = document.documentElement.clientWidth; cHeight = document.documentElement.clientHeight; sWidth = document.documentElement.scrollWidth; sHeight = document.documentElement.scrollHeight; sLeft = document.documentElement.scrollLeft == 0 ? document.body.scrollLeft : document.documentElement.scrollLeft; sTop = document.documentElement.scrollTop == 0 ? document.body.scrollTop : document.documentElement.scrollTop;}
不使用第三个变量交换两个变量
方法1,算术运算(加减):x=x+y; //x暂存两数之和y=x-y; //y为两数之和减去y,即原来的xx=x-y; //x为两数之和减去现在的y(原来的x),变成原来的y方法2,逻辑运算(异或):x^=y;//x先存x和y两者的信息y^=x;//保持x不变,利用x异或反转y的原始值使其等于x的原始值x^=y;//保持y不变,利用x异或反转y的原始值使其等于y的原始值
addEventListener和onclick
addEventListener注册的事件不会被覆盖,而onclick会被覆盖
encodeURI和encodeURIComponent和escape
encodeURI:该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ’ ( ) 。
该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
encodeURIComponent:该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ’ ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
escape:该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。
阅读全文
0 0
- 面
- 面
- 面
- 数据面控制面
- 面试题....
- 吃面
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- “面霸”
- 面试题
- 面试题
- 面试题
- LabVIEW面向对象的一些精华文章
- 【转】Servlet和Jsp的关系
- Android中使用Handler(消息机制)造成内存泄露的分析和解决
- HDU 1466 计算直线的交点数(动态规划)
- 自定义view画圆 单点拖动
- 面
- 玩转ProgressBar,设置渐变效果,同时设置两个进度的颜色显示!!!
- QT学习记录三
- 初试java
- EditText禁止输入表情符号
- 15. 3Sum
- ajax工作原理
- 00740043X_2015_T2 C++语言程序设计基础 Lab 2
- CSS规范