自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

转载 本博客停止更新说明

本博客停止更新,博客内容迁移到:www.xieguanglei.com谢谢支持转载于:https://www.cnblogs.com/yiyezhai/p/3565970.html

2014-02-25 09:17:00 267

转载 JavaScript备忘录(3)——正则表达式

正则表达式是用来进行字符串匹配的。定义正则表达式有两种方法:/wor/或者new RegExp("wor")。使用方法在JS中,使用正则表达式的方法有:字符串的search方法:"hello".search(/e/)返回1。(以0开始的索引,如果未匹配到,返回-1)字符串的match方法:"hello".match(/e/)返回["e"]。(表示匹配到的字符串,若...

2013-11-08 10:12:00 226

转载 JavaScript备忘录(2)——闭包

语句JavaScript是解释型语言,解释器是按照顺序逐句执行的(除了进行一些少量预处理,如将函数声明提前)。顺序是由流程控制语句来控制的,常用的流程控制语句包括:条件控制语句:if...else和switch...case语句循环控制语句:while...、do...while、for和for-in语句其他:break、continue和try...catch语...

2013-08-30 12:01:00 235

转载 JavaScript备忘录(1)——内置类型

JavaScript有一些内置类型,还有很多常用的内置的方法,本文稍作总结,以备查阅。值类型我的理解,值类型是分配在栈上的,而引用类型(当然也包括引用类型内部的值类型)是分配在堆上的。值类型是不可以改变的,比如:var s = "hello";s = "hello2";上述并没有将字符串"hello"改成"hello2",而是新创建了一个字符串"hello2"...

2013-08-29 23:13:00 181

转载 CSS布局:Float布局过程与老生常谈的三栏布局

原文见博客主站,欢迎大家去评论。使用CSS布局网页,那是前端的基本功了,什么两栏布局,三栏布局,那也是前端面试的基本题了。一般来说,可以使用CSSposition属性进行布局,或者使用CSSfloat属性布局。前者适合布局首页,因为首页上的内容往往可以完全控制。后者适合布局模板,模板中填充的内容你没法控制——比如,在编辑wordpress模板时,你肯定没法考虑每篇博文的长度。这篇博文...

2013-07-22 08:57:00 377

转载 地图投影简明笔记

原文见我的博客主站,,欢迎大家过去评论。地图投影,是将地球表面投影到地图平面的过程,将地理坐标转换为平面直角坐标的过程。因为毕业论文需要,我重新回顾了一下地图投影的知识并且作了比较全面且简洁的总结。如果你之前未系统了解过地图投影,又对地图投影感兴趣,这篇博文也许能成为一篇简洁务实的阅读材料。还有,这篇文章就不考虑大地基准面了,直接把地球当做一个完美的球体来看待。还有,本篇只介绍最...

2013-07-13 10:25:00 1026

转载 三维旋转:旋转矩阵,欧拉角,四元数

原文见我的博客主站,欢迎大家过去评论。如何描述三维空间中刚体的旋转,是个有趣的问题。具体地说,就是刚体上的任意一个点P(x, y, z)围绕过原点的轴(i, j, k)旋转θ,求旋转后的点P\'(x\', y\', z\')。旋转矩阵旋转矩阵乘以点P的齐次坐标,得到旋转后的点P',因此旋转矩阵可以描述旋转,$$\begin{bmatrix}x'\\ y'\\ z'\\ 1...

2013-07-12 08:43:00 1854

转载 Three.js源码阅读笔记-5

Core::Ray该类用来表示空间中的“射线”,主要用来进行碰撞检测。THREE.Ray = function ( origin, direction ) { this.origin = ( origin !== undefined ) ? origin : new THREE.Vector3(); this.direction = ( direction...

2013-07-11 09:32:00 224

转载 leetcode刷题笔录-7

存储IP地址给出一个字符串,仅包含数字位,返回可能的IP地址组合。比如给出字符串"25525511135",返回["255.255.11.135", "255.255.111.35"],顺序是无关的。思路:关于IP地址的规则:如果字符串的长度大于12或者小于4,都不是合法的IP地址,IP地址共有4个字段,每一个字段都是0~255之间的整数,但是在字符串中,不可以出现诸如"25...

2013-05-09 11:06:00 167

转载 leetcode刷题笔录-6

验证二叉查找树给出一棵树,验证其是否是一棵二叉查找树。二叉查找树应当满足,对于每个节点:左子树中的所有节点的值小于该节点的值;右子树中的所有节点的值大于该节点的值;左子树和右子树都必须是二叉查找树。思路:递归检查每个节点的值是不是在某个区间 [min, max] 中,对根节点,检查其是不是在区间 [INT_MIN, INT_MAX] 中。对某个节点的检...

2013-05-03 13:54:00 126

转载 leetcode刷题笔录-5

数组转平衡二叉查找树给定一个已排序的数组,将其转化为一棵平衡二叉查找树。平衡的概念是:任一节点的左子树和右子树的深度之差不大于1。思路:数组是可以通过下标来访问的,所以去中点作为根节点,然后递归地生成左右子树。实现:/** * Definition for binary tree * struct TreeNode { * int val;...

2013-05-01 22:18:00 122

转载 leetcode刷题笔录-4

不同的子序列给定字符串 S 和 T ,计算 T 作为 S 的不同子序列的个数(不同,指子序列每个元素在原序列中的位置)。比如,给出 S="rabbbit" 和 T="rabbit" ,应当返回 3 ,应为有这样 3 种不同的子序列:"rabbbit","rabbbit","rabbbit"。思路:动态规划。T(1...n) 作为 S(1...m) 的不同子序列的数量(问题),...

2013-04-19 08:59:00 133

转载 JavaScript的模块化:封装(闭包),继承(原型)

虽然 JavaScript 天生就是一副随随便便的样子,但是随着浏览器能够完成的事情越来越多,这门语言也也越来越经常地摆出正襟危坐的架势。在复杂的逻辑下, JavaScript 需要被模块化,模块需要封装起来,只留下供外界调用的接口。闭包是 JavaScript 中实现模块封装的关键,也是很多初学者难以理解的要点。最初,我也陷入迷惑之中。现在,我自信对这个概念已经有了比较深入的理解。为了...

2013-04-18 09:53:00 237

转载 《Effective C++》简明笔记-中

32. 确定你的 public 继承模拟了 is-a 关系面向对象编程中最重要的一条。如果派生类D通过public方式继承了基类B,那么所用用于B的方法 或者 基类B自身具有的方法,都适用于D。33. 避免遮掩继承而来的名称如果派生类D通过public方式继承了基类B,那么D中的函数/变量名会遮掩B中的函数/变量名,如同局部作用域与全局作用域的关系一样。比如...

2013-04-07 20:44:00 132

转载 leetcode刷题笔录-3

13.三角形给出一个“三角形”,找到从底边到顶点的最小路径(即,路径上所有元素加和最小)。路径只能跨越相邻的点。如给出: [2], [3,4], [6,5,7], [4,1,8,3]那么就返回11,因为最短路径1-5-3-2的和为11。思路:很简单,与算法导论中一道“国际象棋”棋盘的题很类似。从底边开始生成到每个点的最小路径...

2013-04-02 09:08:00 126

转载 leetcode刷题笔录-2

6.字梯游戏给定两个单词start和end,以及一本字典,找到由start到end的最短变换路径,每一次变换只允许改变一个字母,且变换后的单词必须出现在字典中。比如给出start为"hit"而end为"cog",字典为["hot","dot","dog","lot","log"],那么应当返回5,因为最短路径是:"hit" -> "hot" -> "dot" -&gt...

2013-03-27 16:51:00 191

转载 leetcode刷题笔录-1

1. 回文分割给定一个字符串s,将s分割为数个子串,每个子串都是回文。比如,给定字符串"aab",返回:[ ["aa","b"], ["a","a","b"] ]思路:递归法,子串 s[i]...s[j] 的所有回文分割,都是由 s[1] 单独构成的一个元素的子串连接上 s[2]...s[j] 的所有回文分割(子问题),以及任何一个...

2013-03-19 15:51:00 142

转载 算法导论-13.贪心算法

与动态规划类似,贪心算法也将问题化简为规模较小的子问题,并通过递归解决子问题来获取整个问题的解。不同的是,贪心问题不对子问题进行比较,而是只生成一个非空的子问题,而使选择在当时看上去是最优的(即“贪心”的含义)。活动选择问题几个互相竞争的活动都要求以独占的方式占用某个公用资源(如选修课程对个人可支配时间的要求,或会议对会议室的要求),每个活动都有开始时间和结束时间。如何安排活动,...

2013-03-14 18:44:00 188

转载 算法导论-12.动态规划-下

这一篇主要关于最优二叉查找树的分析与实现,以及算法导论动态规划一章的几道思考题。最优二叉查找树最优二叉查找树,是经过优化的二叉查找树。在知晓每个键被查询到的概率的情况下,生成一棵二叉查找树,使得查找的期望深度最小。最优二叉查找树仍然保持二叉查找树的性质,所以查找概率最大的键不一定是树的跟。形式地,给定由 $n$ 个互异关键字组成的有序序列 $K=\{k_{1},k_{2},....

2013-03-13 11:11:00 174

转载 《Effective C++》简明笔记-上

在学习算法导论的过程中,我深深地震撼于自己笔下C++代码的丑陋。于是我决定捧起这本《Effective C++》。本来打算看完这本书,写一篇完整的笔记博文,但是刚刚看到一半,我已经跃跃欲试地想动手改善我的代码了。所以,我将写完的这部分笔记整理成单独的一篇博文。1. 视C++为一个语言联盟。C++ 包括 C& OO C++ & Template C++ &am...

2013-03-07 15:04:00 162

转载 算法导论-11.动态规划-上

动态规划常用于最优化问题。动态规划方法将问题划分为规模较小的子问题,递归求解子问题,并合并起来。如果一个问题的最优解,可以利用其子问题的最优解来解决,那么该问题具有最优子结构,有时可以通过分治法或动态规划求解。在分治法中,每个子问题只要求解一次。换言之,假定问题可以分为子问题A和B,A又可以分为子问题C和D,那么C和D绝不可能用来参与解决问题B。例如分治法最典型的应用二分查找中,对数...

2013-02-28 15:54:00 212

转载 Three.js Demo源码分析-1.MorphTargets与BufferGeometry

Three.js主页上有很多绚丽的Demo,是学习的极佳素材。我正利用闲暇时间学习这些Demo,并将心得体会记录下来。老调重弹先睹为快空间中旋转的立方体板条箱,恐怕是主页上最简单的一个例子了。在WebGL原生API教程中就有这个例子,用Three.js实现起来更加方便了。但是,作为开始的开始,还是再重弹一遍老调吧。较简单的例子多采用这种一目了然的结构: //...

2013-02-22 10:51:00 208

转载 算法导论-10.顺序统计树与区间树习题

顺序统计树和区间树都是对红黑树的扩张:通过在节点添加字段完成其他的功能,如果该字段可以在 $O(1)$ 时间内维护,就能够不影响红黑树本身操作效率渐进量级。顺序统计树顺序统计树是红黑树的扩展:在红黑树的每个节点额外维护一个域size,记录以该节点为根的子树中的总结点个数。顺序统计数具有这样的功能:在 $O(\lg n)$ 时间内找到树中所有元素的第 $i$ 个顺序量。以下是一棵顺...

2013-01-29 17:10:00 511

转载 [译] THREE.JS入门教程-6.创建自己的全景图

译序Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学习基本要通过Demo源码和Three.js本身的源码来学习。国外网站aerotwist.com有六篇较为简单的入门教程,我尝试着将其翻译过来,与大家分享。0.简介全景图非常酷。...

2013-01-25 08:53:00 245

转载 [译] THREE.JS入门教程-5.THREE.JS 你应当知道的十件事

译序Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学习基本要通过Demo源码和Three.js本身的源码来学习。国外网站aerotwist.com有六篇较为简单的入门教程,我尝试着将其翻译过来,与大家分享。0.简介嗨,这是我的...

2013-01-24 08:54:00 139

转载 [译] THREE.JS入门教程-4.创建粒子系统

译序Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学习基本要通过Demo源码和Three.js本身的源码来学习。国外网站aerotwist.com有六篇较为简单的入门教程,我尝试着将其翻译过来,与大家分享。0.简介嗨,又见面了...

2013-01-23 08:57:00 423

转载 [译] THREE.JS入门教程-3.着色器-下

译序Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学习基本要通过Demo源码和Three.js本身的源码来学习。国外网站aerotwist.com有六篇较为简单的入门教程,我尝试着将其翻译过来,与大家分享。0.简介这是WebGL...

2013-01-22 08:49:00 153

转载 [译] THREE.JS入门教程-2.着色器-上

译序Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学习基本要通过Demo源码和Three.js本身的源码来学习。国外网站aerotwist.com有六篇较为简单的入门教程,我尝试着将其翻译过来,与大家分享。0.简介之前我已经给出了...

2013-01-21 18:13:00 196

转载 [译] THREE.JS入门教程-1.开始使用THREE.JS

译序Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学习基本要通过Demo源码和Three.js本身的源码来学习。国外网站 aerotwist.com有六篇较为简单的入门教程,我尝试着将其翻译过来,与大家分享。我在一些实验项目中使用了Th...

2013-01-21 09:03:00 227

转载 算法导论-9.红黑树习题

这一篇解决《算法导论》中红黑树章节的部分习题,在上一篇自己亲自实现红黑树后,解决这些题目就轻松多了。练习13.1-6 在一棵黑高度为 $k$ 的红黑树中,内节点最多有多少个?最少有多少个?黑高度为 $k$ 的二叉树,全高度最小为 $k+1$,最大为 $2k+2$ 。内节点最多有 $2^{k+1}-1$ 个,这种情况下红黑树中没有红节点,黑节点全满(满足所有叶子节点黑高度一致的条件...

2013-01-16 20:16:00 1595

转载 算法导论-8.红黑树详解

红黑树是一种相当复杂的数据结构,一种能够保持平衡的二叉查找树。如果条件极端,随机生成的二叉树可能就是一个单链表,深度为 $n$ ,而红黑树的高度,即使在最坏情况下也是 $\Theta(n)$ ,红黑树通过满足以下5条性质来保证这一点:节点是红色或者黑色的。根节点的黑色的。NIL节点时黑色的。每个红色节点的左子节点和右子节点必定是黑色的。任意叶子节点的黑深度相等。...

2013-01-14 19:29:00 120

转载 算法导论-7.二叉查找树

树几乎是使用最广泛地数据结构之一了,我想其原因是,在期望高度仅为 $lg n$ 的结构中存储了 $n$ 个元素。树中的每个操作,在每一层都使用了极具有价值的判断并降低了问题的复杂度,这几乎完美地体现了分治的思想。还有,从这篇博文开始,我开始用svg作为示意图而不是以前使用的png,这东西很符合我的……,呃,“理念”,唯一的问题就是创建起来有点麻烦……嗯。二叉查找树二叉查找树是一种...

2013-01-09 08:51:00 197

转载 算法导论-6.散列表和顺序统计学

散列表类似于字典,是一种追求高效的数据存储方式。这一篇是我自己实现的散列表(链式散列表和开放寻址表),和一些习题的思路。这一章的习题有一半左右是在一致散列假设下对开放寻址散列性能的分析,以及全域散列的内容,需要一定数论知识,否则做起来比较困难,这篇博文没有包括这部分习题。也许在学习一遍附录A之后再来做这些题目会更好。因为没有包括这部分习题,所以这一篇也就比较单薄,因此我加上了前面涉及到的...

2013-01-06 09:25:00 248

转载 算法导论-5.基本数据结构

最基本的数据结构:栈、队列、链表、二叉树。这一篇主要实现前三种数据结构,记录一部分习题的思路。这一篇比较简单,但算是学习更高级数据结构的良好开端吧。栈先进后出。最主要的方法是Push(element)个Pop(),前者压入一个元素,后者弹出一个元素。用数组实现一个简单的栈。/*Stack*/template <typename T> class xStac...

2013-01-05 09:13:00 101

转载 算法导论-4.随机快速排序与线性时间排序

这一篇主要是关于快速排序的随机化版本和线性时间排序。前者即跟递归有关,又跟随机算法和概率分布有关,与后者合并作为一篇。主要记录一些算法的实现,和部分题目的思路。快速排序的随机版本快速排序性能的好坏和partition过程中数组最后一个值(主元)密切相关,事实上我们希望待排序数组的任意一个排列都是等可能出现,从而使主元的期望落在 $n/2$ 的位置。现实情况并非如此,待排序的数组几...

2013-01-04 12:22:00 211

转载 我的2012年度总结

马上就到2013年了,园子里好多年度总结,我也写一个吧。现在研究生二年级,今年六月份结束了研一的集中课程学习,终于不用再惦记着“上课”,而可以在实验室有自己的一个格子,每天自己安排时间了。不用再“上课”了,我仿佛卸下了一副重重的担子——从小学一年级算起,我已经上了整整17年的课了。在这17年的最后几年,我愈发觉得上课实在是一件太浪费时间的事情了。偏激地说,3/4的课程很难带给你收获,...

2012-12-31 11:59:00 114

转载 算法导论-3.递归部分习题选

这一部分主要算法导论中递归式、堆排序和快速排序章节里选择的对我而言较有价值的题目。练习4.1-1 证明 $T(n)=T(\lceil n/2\rceil)+1$ 的解为 $O(\lg n)$ 。解答:猜测 $T(n)\leq c\cdot \lg(n-b)$ ($-b$ 的原因见《算法导论》-4.1代换法-一些细微问题),则用数学归纳法,如果其满足 $n/2$ 则对 $n$ 有:...

2012-12-31 08:55:00 757

转载 Three.js源码阅读笔记-4

北京越来越冷了,人也越来越懒怠,越来越像呆在温暖的寝室里看小说或者打游戏,也好久没看Three.js源码了。今天天气不错,接着看!这次从光照部分看起:光照模型,从光线本身角度来看包括环境光、平行光、点光源,从物体表面材质角度看又包括漫反射和镜面反射。Lights:LightTHREE.Light = function ( hex ) { THREE.Object...

2012-12-24 16:37:00 128

转载 算法导论-2.随机算法习题选

算法导论里的习题,有很多都是经典,不少题目都做不出来,到网络上找答案,再自己慢慢理解,这样的过程使我受益。我精选了一部分习题,写出思路作为存档以供查阅。从这篇博文开始,我尝试使用MathJax来显示公式,而不是之前若干篇博文中使用图片,如果你的浏览有什么问题,请告诉我。前两题是算法入门一节挑的,太少就没有单独做一篇。练习2.3-7给出运行时间为 $\Theta(nlgn)$ 的...

2012-12-21 09:07:00 434

转载 算法导论-1.排序算法

排序算法是最基础的一类算法。主要排序算法包括选择排序、插入排序、冒泡排序、合并排序、堆排序和快速排序。把这些排序算法全部实现一边,再把《算法导论》对应章节后面的习题做一遍,确实是系统学习算法的一个不错的开端。选择排序选择排序的想法很简单,把需要排序的数组看成一堆扑克牌:先查一遍,抽出最小的作为第一个张;在剩下的牌堆里再查一遍,选出最小的作为第二个元素……重复直到牌堆耗尽。想法简单...

2012-12-12 14:07:00 150

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除