- 博客(30)
- 资源 (4)
- 收藏
- 关注
原创 HTML5+JavaScript实现Flappy Bird
废话少说,先上效果图。相关实现:1.三个类,Bird类,Obstacle类,FlappyBird类(游戏主要函数)function Bird(x, y, image) { this.x = x, this.y = y, this.width = image.width / 2, this.height = image.height, this.image =
2014-02-20 15:35:52 5295 6
原创 初窥关键字new的真容
假设我们没有new操作符。1.创建对象没有new操作符,我们怎样创建一个对象?当然可以使用如下代码。function Empolyee(name){ this.name = name; this.getName = function(){return this.name}; } var employee = {}; Employee.ca
2014-03-24 23:51:01 732
原创 利用JavaScript检测CPU使用率
之前在玉伯的Github Issues里看到了使用JS检测CPU使用率的方法,觉得很赞。特别自己实现了一下,另外加了一个绘制直方图的功能可以直观看到CPU使用率的情况。效果请见:传送门实现思想 其实就是setInterval,利用当前时间减去上一次执行timer记录的时间,得到时间差来反映CPU的延迟,侧面反映了CPU的使用率。var data =
2014-03-22 00:56:35 5483 5
原创 闭包的作用与可能引起的内存泄漏
1.作用域链 理解闭包之前需要明白一个概念:__作用域链__。当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。作用域的前端,始终都是当前执行的代码所在环境的变量对象。如果这个环境是函数,则将其活动对象作为__变量对象__。这个变量对象来自于下一个包含环境,下一个变量对象又来自于下一个包含环境,知道全局执行环境。全局执
2014-03-06 00:24:45 3798
原创 深入理解Function类型
1.函数是对象,函数名是指针 函数实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。function sum(num1, num2){ return num1 + num2;}alert(sum(10,10)); //20 var anoth
2014-03-04 15:32:48 665
转载 深刻理解JavaScript基于原型的面向对象
转自 深刻理解JavaScript基于原型的面向对象主题一、原型一、基于原型的语言的特点1 只有对象,没有类;对象继承对象,而不是类继承类。2 “原型对象”是基于原型语言的核心概念。原型对象是新对象的模板,它将自身的属性共享给新对象。一个对象不但可以享有自己创建时和运行时定义的属性,而且可以享有原型对象的属性。
2014-01-10 20:52:11 765
原创 Sicily 1063. Who's the Boss
题目大意:按照薪水和身高排序,薪水与身高最高的为BOSS。求给定ID人的BOSS及下属数目。解题思路:1.惯例先吐槽。N次TLE,最后0.98险过。2.根据题意,按照要求条件建立N叉树,最后输出某节点的父节点ID及子节点个数。3.建树过程分为三个步骤:a)首先按照薪水排序,薪水最少的员工为下属员工最少的员工(即为叶节点);b)从工资最低的员工开始遍历,第一个比其身高的人即为
2014-01-09 21:49:28 790
原创 Sicily 1822. Fight Club
题目大意:一圈人与相邻人对打,必有一人获胜,问某人是否可以通过更改搏斗顺序获胜。解题思路:1.乍一看以为是邻接矩阵遍历,但是不相邻的两个人不一定可以相遇。2.所以问题变为判断不相邻两人是否可以相遇,第i个人是否能与第j人相遇要满足条件P。3.令dp[i][j]记录i与j是否相遇,那么i与j相遇的条件P = dp[i][k] && dp[k][j] && (win[i][k] ||
2014-01-09 20:45:44 933
转载 JavaScript与函数式编程
转自JavaScript与函数式编程牢记:函数式编程不是用函数来编程!!!什么是函数式编程 什么是函数式编程?如果你这么直白地询问,会发现它竟是一个不太容易解释的概念。许多在程序设计领域有着多年经验的老手,也无法很明白地说清楚函数式编程到底在研究些什么。函数式编程对于熟悉过程式程序设计的程序员来说的确是一个陌生的领域,闭包(closure),延续(co
2014-01-08 18:50:01 613 1
原创 传说中超实用的JavaScript技巧
1.使用===替换==Javascript有两组相等运算符,一组是==和!=,另一组是===和!==。前者只比较值的相等,后者除了值以外,还比较类型是否相同。请尽量不要使用前一组,永远只使用===和!==。因为==默认会进行类型转换,规则十分难记。false == 'false' // falsefalse == undefined // falsefals
2014-01-07 19:17:47 647
原创 Sicily 1024. Magic Island
题目大意:图论,计算权值和最大的路径。解题思路:遍历所有路径,计算权值和,找出最大值即可。遍历可以通过递归或者循环。判断当前节点是否被访问可以通过两种方法:1.定义结构体,保存visited信息2.路径初始化。计算每个节点间的距离,如果此ji
2014-01-04 21:33:09 697
原创 Sicily 1006. Team Rankings
题目大意:计算全排列中某一序列,与给定序列的逆序差之和最小。解题思路:1.在计算逆序差之和最小前,首先要算逆序差。根据题意序列为ABCDE的全排列,我们可定义10个字母对,即:AB、AC、AD、AE、BC、BD、BE、CD、CE、DE如果当前序列A在B之前,我们令AB为1,若B在A之前AB为-1。这样当输入某序列时,可以得到一个10位的key。计算逆序差即为计算两个
2014-01-04 16:39:05 677 1
原创 Crawler学习:4.Improve Performance
声明:所有内容均为本人学习《自己动手写网络爬虫》心得,有任何疑问可以参考原文。提高爬虫的表现性涉及到很多方面。针对不同的需求设计相应的爬虫队列以及爬行的策略,是各大搜索引擎的核心竞争力。在此只针对之前的简单爬虫进行分析。1.Url压缩通常我们获得Url为较长的字符串,并将其作为key来进行存储查找匹配。为了提高匹配效率及节省存储空间,首先得到Url时可以进行
2014-01-02 17:55:28 682
原创 Sicily 1935. Rebuild the tree
题目大意:根据前序和中序重建二叉树,并按bfs输出解体思路:关键注意重建二叉树时递归判断结束条件。bfs无难度。// 1935. Rebuild the 2-tree #include #include #include using namespace std;string pre,mid;int len,pos;struct Node{ char it
2014-01-02 16:39:32 594
原创 Crawler学习:3.Crawler Design
声明:所有内容均为本人学习《自己动手写网络爬虫》心得,有任何疑问可以参考原文。爬虫示例结构示意图我们可以简单得把每一个url代表的网页看作一个节点,那么网络可以看成是由若干个节点及其边组成的图。那么爬虫的过程就是要遍历这个图,搜索我们有用的信息。遍历图的过程有很多种,最简单的为宽度遍历、深度遍历。以宽度遍历为例,假设我们的爬虫不具有任何偏好,我们
2013-12-29 23:50:10 897
原创 Crawler学习:2.Download Pages
声明:所有内容均为本人学习《自己动手写网络爬虫》心得,有任何疑问可以参考原文。1.网页抓取所谓网页抓取,就是把URL 地址中指定的网络资源从网络流中读取出来,保存到本地。类似于使用程序模拟IE 浏览器的功能,把URL 作为HTTP 请求的内容发送到服务器端,然后读取服务器端的响应资源。Java 语言是为网络而生的编程语言,它把网络资源看成是一种文件,它对网络资源的访问和对本
2013-12-15 15:03:59 1205
原创 Crawler学习:1.Overview of Crawler
声明:所有内容均为本人学习《自己动手写网络爬虫》心得,有任何疑问可以参考原文。学习事由:因为前段时间“照妖镜事件”以及近来云计算的学习,突然感觉到了大数据的魅力。但是在小七强大的数据分析能力之下,体现的是其团队扎实的技术实力。《数据的游戏:冰与火》中说道:在大数据时代下,数据象征着权利。诚然,我们需要的不再是抛弃数据追求结果的数据小农,而是在大数据兵临城下处之泰然的数据
2013-12-14 18:02:45 782
原创 Sicily 1203. The Cubic End(数论乘法)
题目大意:立方求尾数。求一个数的立方尾数等于本身。解题思路:1.判断尾数相同,不需要将整个数乘完再取尾数。只要从低位开始,一位一位逐个匹配即可。2.尾数为1,3,7,9时,1立方尾数为1,3立方尾数为7,7立方尾数为3,9立方尾数为9。所以,最后一位只有相应4种可能。3.取尾数操作即求模,取最后一位即模10,最后两位模10^2。4.在立方取模时运用到数论乘法求模。a
2013-12-12 16:15:41 1330 1
原创 Sicily 1259. Sum of Consecutive Primes
题目大意:求给定数,由多少组相邻质数相加等于给定数本身。解题思路:1.提前进行1-10000质数计算,记录至prime[]。打表肯定不会TLE。2.循环嵌套计算,注意循环结束条件prime[i] // 1259.Sum of Consecutive Primes #include using namespace std; int prime[] = {2,
2013-12-09 18:33:38 1866
原创 Sicily 1500. Prime Gap
题目大意:求给定数前后质数之间的差。解题思路:分别记录给定数前一个质数和后一个质数,相减得到差即可。// 1500.Prime Gap #include using namespace std; bool isPrime( int num ){ for( int i = 2; i * i <= num; ++i ){ if( num %
2013-12-09 17:27:31 627
原创 Sicily 1099. Packing Passengers
题目大意:求线性方程的解。解题思路:根据题意大概可以转化成线性方程求解的模型。求满足 A * x + B * y = num的x、y,使Cost = CostA * x + CostB * y达到最小。1.首先判断A,B是否为0。如果A为0,B不为0,那么y为num/B;如果B为0,A不为0,那么x为num/B;如果A,B同时为0,则无解如果A,B都不为0,
2013-12-09 17:23:21 901
原创 Sicily 1119. Factstone Benchmark
题目大意:求满足n! 解题思路:通过两边取对数变化不等式 为 k > sum(log(i))/ log(2)。数太大了一开始以为要做大数计算。。。这个题放到高中应该很容易,一下子没想到。// 1119. Factstone Benchmark// n! k > sum(log10(i))/log10(2) #include #include us
2013-12-06 23:29:21 639
原创 Sicily 1142. Pancake Sorting(煎饼排序)
题目大意:煎饼排序。这个问题是Bill Gates想出来的。描述如下。一位餐厅侍者在送出一叠煎饼 (pancakes) 到顾客之前,发现厨师实在太困了,这些煎饼大小不一,混杂在一起堆成一叠,客人实在不会有太多好感。因此,在送出这些煎饼之前,这位侍者会使用一片锅铲将这些煎饼重新排成一叠由小而大排列的煎饼。不过,由于盘子太小,我们不能够将煎饼平铺后再重新排一次,而只能用锅铲卡在某个煎饼的下方,
2013-12-06 19:43:45 3052
原创 Sicily 1059. Exocenter of a Trian
题目大意:几何法计算三角形ABC的垂心解题思路:根据题意解题即可,但是计算过程需要三个主要的函数。1.向量旋转ratate():把向量分解成平行于x坐标轴和y坐标轴的向量,再分别旋转,最合把旋转结果合并。2.求中点middle():返回两点中点即可。3.求两直线交点intersection():只需计算两条直线即可求出交点,但是需要判断直线是否有斜率,分类讨论。// 1
2013-12-05 22:22:52 894
原创 Sicily 1240. Faulty Odometer
题目大意:一个给定数,求小于这个数所有不包含4的数的个数。解题思路:方法1:拿到题以为直接遍历判断是否包含4即可。但是C++ 中string与int转化不像Java那么方便。放弃之。方法2:事先算出各位(如10,100,1000,10000)所包含的4的数量打表,然后用位数相乘。但每次计算会忽略本位为4时相应的数量。放弃之。方法3:看了答案之后才恍然大悟是变相的9进制转化为10
2013-12-05 19:04:23 798
原创 Sicily 1014. Specialized Four-Dig
题目大意:判断一个四位数十进制数,各位之和与转化为12,16进制数后各位之和是否相等。相等则输出这个数。解题思路:考察进制转化,只需求和即可。不需输出转化后的数。当然也可以打表。// 1014. Specialized Four-Dig #include using namespace std; // 进制转换,只需要求和即可 int toBase(int
2013-12-05 18:37:35 733
原创 Java 学习笔记
终于有机会系统地学习Java。在此记录Java及面向对象编程的一些特点概念以备以后面试之用。1.深复制(Deep Copy) 浅复制(Shallow Copy)浅复制:仅复制复合对象的根对象。若还有子对象,则将新复制的根对象中的子对象引用指向原对象的子对象。深复制:复制整个复合对象的结构,递归复制对象中的每一次子对象。深复制的两种方法:1)重定义clone()。调用父类
2013-12-04 22:55:42 638 1
原创 Sicily 1152/1153. 马周游
题目大意:给出马的初始位置,得出遍历棋盘的一条路径。解题思路:DFS(深搜)+剪枝。1、DFSI. 计算初始状态root下步可达点II. 如果下步可达,则继续计算下步的下步是否可达III. 如果下步不可达,则返回上一步计算其他方向下一步是否可达IV. 步数不为30,则重复II/III。2、剪枝仅仅使用DFS,递归效率低下。在进行下一步递
2013-12-03 19:20:43 811
原创 Sicily 1151. 魔板
题目大意:类似于华容道的按规则移动方块,达到预期状态。算法思想及主要数据结构:BFS(广搜)+ 康托展开 + Queue1、BFSI. 将初始状态放入队列,II. 得到队列中的第一个状态,则从队列中popIII. 得到pop出的状态与目标太进行比较,如果匹配则结束,否则对当前状态继续分别进行A、B、C三种操作,把得到的新状态依次放入队列。IV.只要队列
2013-12-03 19:16:32 569
原创 Sicily 1041. Pushing Boxes
题目大意:一个矩形房间里面有若干箱子。每次操作是把房间的其中一面墙往里移动,把箱子推到新的位置,问最后所有箱子的位置。解题思路:分上下左右四种情况分别考虑,按照题目描述模拟。以下墙上移(move_up)为例:1.首先沿列方向,计算每一列最大箱子数nb。用边界减去nb得到实际可以移动最大步长actual_step2.在移动前,判断预期移动步长与实际步长,取小值。题目假定当
2013-12-03 19:11:16 1089
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人