自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

靖空间

降低成功的时间复杂度,提高生活的空间复杂度

  • 博客(25)
  • 资源 (5)
  • 收藏
  • 关注

原创 Geeks 面试题 : Optimal Binary Search Tree

关键:如何计算整个优化BST的查找次数,这里不用按上面说的一层一层地去计算,而是巧妙地计算:每增加一个根节点的时候,根节点下面的所有节点的访问次数都需要增加1倍,那么只需要把这些节点的总和加起来就可以了,因为根节点的访问次数也是一倍,所以可以连根节点也加进球,就得到最后的总访问频率了。经验:一些看起来简单的小函数,要用最优的方法实现就不是那么容易了。原网站的时间效率是O(n*n*n*n),原文也提到可以提高到O(n*n*n)。下面给出两个程序,时间效率都提高到了O(n*n*n)。第一个程序只需要

2014-03-13 08:21:56 1965 3

原创 Geeks 面试题: Ugly Numbers

下面是这个简单方法,这里带了可以打印所有小于n的ugly number的程序:动态规划法:注意: 可能会有重复的数字要跃过,程序注释出去了。否则答案错误!细想一下,其实一句话概括就是:由最小的Ugly number算起,然后每个都分别乘以2,3,5得到最终答案。

2014-03-12 08:06:12 2633

原创 图形学思考 - 高亮反射光 Specular Light

高亮反射光 Specular Light就是平时我们看到的一个光滑球面会发射的耀眼光。那么为什么很多球面会有这种效果呢?这个是不是球面的特性,还是某些表面的特性, 如镜面?从图形学的角度解答:不是球面的特性,也不是镜面的特性。为什么呢?

2014-03-11 07:34:08 2684

原创 Geeks 面试题: Maximum size square sub-matrix with all 1s

本题和Leetcode上的找到最大面积不一样,这里是找最大的正方形。不过比Leetcode上的那个题目要容易多了。这里比原网站省内存,由O(m*n)降到O(n).按要求返回下标,也容易,我们一个二层for循环,一气呵成解决问题:

2014-03-11 07:28:33 2066

原创 Geeks 面试题:Fibonacci numbers 优化为lgn效率

通过这个矩阵相乘的方法,得到的时间复杂度依然是O(n),但是可以进一步使用二分法,把复杂度降低到O(lgn)。

2014-03-10 08:42:36 2217

原创 图形学思考 - 漫射光 diffuse light

我们玩游戏的时候见到各种炫目的效果基本上都离不开光照渲染的功劳。顺便说下,目前我见过最好的光影效果的游戏大概应该是细胞分裂-复仇,那种真实感,质感真是让人震惊。光照模型主要由三种:1 Diffuse Light 漫射光2 Ambient Light 环境光3 Specular Light 高亮光这里主要说说漫射光实际看看周围的桌面,墙面,太阳照射到上面的时候,我们就能看

2014-03-10 08:42:09 2450

原创 Geeks面试题: Closest Pair of Points | O(nlogn) Implementation

本题是前一题的二分法的改进,前一个算法的效率是O(nlgnlgn)前一遍二分法:http://blog.csdn.net/kenden23/article/details/20737523为什么这个二分法是O(nlgnlgn)呢?除了使用公式计算之外,也可以这么考虑最坏情况,当距离中点的小于d距离,集中了所有的点,那么每次递归都需要对所有的点进行一次排序,效率是O(nlgn),那么每次二分都需要这么的效率,就要乘以做二分法的lgn效率,那么总效率就是O(nlgnlgn)。呵呵,不是很正规的分析,不过我

2014-03-09 08:14:16 1479

原创 Geeks 面试题: Box Stacking Problem

本题理解题意困难,由理解题意到构造算法这个过程原来也不容易。算法就是最长递增序列算法的灵活运用。 少了原题中的w <= d这个条件,其实也只需要修改一点代码就可以了。

2014-03-09 08:11:58 1928

原创 Geeks面试题: Closest Pair of Points

好困难的一道题目,虽然方法是二分法,但是其中也牵涉到暴力法,其中的函数qsort的使用也值得学习学习。其中最难的地方:就是上面说的第6步。其中的证明可以上网找找资料,其实也不是很难。会了证明之后,下面程序的实现函数是midClosest。要想到这样去实现这个函数也是挺困难的。这里的程序是在原Geeks上的程序修改而来的,主要是改了squDist函数,直接返回平方值就可以了,最后再使用sqrt,返回距离:

2014-03-08 08:23:44 3117

原创 Geeks 面试题 - Maximum Length Chain of Pairs

本博客贴出动态规划法解和贪心法的程序。动态规划法的时间效率是O(n*n);而贪心法的效率是O(nlgn),主要是因为sort需要O(nlgn)的时间效率,而贪心法本身只需要O(n).

2014-03-08 07:42:03 2196

原创 Leetcode 第151题 最新题解 Reverse Words in a String

Leetcode 很久没有更新题目了。太巧了,今天刚刚说150道题结贴,就出新题了,呵呵。好吧,第一时间贴上来。思路:1 从后往前遍历string2 保存单词,然后需要逆转,在保存到结果中注意题目中的clarification,处理好其中的空格。利用了两个额外string保存中间结果。空间复杂度为O(n).时间复杂度是O(n),简单题目:2到3星级

2014-03-07 12:13:26 17591 6

原创 图形学思考 - 旋转物体的问题

要彻底理解好如何旋转一个物体原来也不是很容易的事情这里有一个比较难理解的问题:为什么有些书本上说:利用transformation操作,重复绘制同一个物体(比如要画很多球),比直接在不同位置直接画球要节省很多计算时间了。其中的本质原理是什么呢?一个简单场景的选择有三个选择的方法:1   旋转世界坐标2   旋转物体在世界坐标中的位置3   旋转镜头位置

2014-03-07 08:25:47 2937

原创 Leetcode 150题目终结贴 - Valid Number

2014-1-23 最后完成这道题目, Leetcode 150道题目正式完工且每道题做了不下三遍。贴出这道题是2014-3-7了。时隔一个月多了,期间又多做差不多两遍,到现在才贴完,是因为到现在才算把所有题目都研究透彻了。每道题做了五遍以上了,打算以慢速继续刷多几遍,每天刷几题吧。算法修炼到现在差不多四个月了,期间过春节,没什么时间,算起来也有三个月。终于提高到了一个全新的境界了,对算法是信心满满的了。有空全面地总结一下。本博客也有所有Leetcode题的程序了,不太好的代码都有更新了,所有Le

2014-03-07 08:24:24 20476 5

原创 Computer Graphics Thinking - 视野矩阵 view matrix

3D世界中,在计算各个物体位置的时候是以世界坐标为主的,但是最终却是所有3D模型都需要转换到视野空间中的(view space),这样才能在屏幕中显示出来。我们可以想象3D空间中有很多模型(人物,汽车,枪等),同时也一直都存在一个摄像头,而我们就是通过这个摄像头去看我们创造的3D世界的。

2014-03-06 07:38:43 2250

原创 Leetcode N-Queens II

递归回溯法的灵活运用。新思维:这里优化点是从底往上累计加起来,速度是快很多的,不过这个这个题目要想到从底往上加起来还是有难度的。4到5星级难度吧。

2014-03-06 07:37:20 2587

原创 Leetcode N-Queens I

写非递归回溯法要点:1 记录好是否发生递归状态了2 递归之后不能重复之前试过的解决方案本题利用一个vector<int> backtrackCol(n,-1)实现了这两个功能3 清楚什么时候需要回溯本题是if (col == n) 这个条件就回溯了4 回溯,就需要重置填过了的内容本题需要重置两个数组: vector<int> backtrackCol和boardIterative算法大概比recurrence算法难度高上三倍吧,而效率并没有明显区别。下面是非递归算法12 queens用时也

2014-03-05 07:37:45 2525

原创 图形学思考 - 聊聊透视图投射矩阵perspective projective matrix

什么是透视图投射矩阵perspective projective matrix?空间物体的坐标乘以投射矩阵,那么就可以把空间的物体投射到屏幕上。大体是这样的矩阵:这里探讨一个问题:为什么乘以这个矩阵就可以把空间物体投射到屏幕上了呢?看看下面的图:其中的Projection Window就是我们的屏幕位置。我们需要把所有两条斜边和Near Plane 和Far P

2014-03-05 07:36:36 5151

原创 Leetcode Word Break II

难度是5星级了。主要的难点: 要优化到极致,不能直接使用递归回溯法,否则超时。本程序是连打带消地对付了这种情况效率是十分高的了,有12ms运行时间的战果。比网上很多博客的程序要优化,关键是动态规划表的构建功力,本程序的构建方法应该是最优的。有能改进的欢迎指教。本程序方法:

2014-03-04 07:48:07 5112 1

原创 图形学思考 - 空间坐标转换的理解思考过程

图形学中最常进行的一个计算就是:模型空间modle space 和世界空间world space之间的转换。应用场景如:在模型空间中绘制这个模型是最方便的,绘制之后就需要把这个模型放在一个场景中,这个场景的所有物体都不必然是以世界空间进行计算的。如下图:到底如何理解这两者之间的转换过程呢?理解思考过程应该如下:1 关键就是先假设modle space和w

2014-03-04 07:44:34 1986

原创 图形学思考 - 关于物体位置变换 Translation

物体位置变换是图形学的基础但是其实对于初学者来说其实不是那么容易理解透切的知识。不信?仔细想想这个问题:计算机到底是如何把一个物体从空间的一个位置移动到另外一个位置的呢?我这里要解说前面那个问题。比如下面的图:火箭是如何从坐下的位置移动到右上的位置的呢?因为如上面的translation 公式好像是移动一个点的位置的,但是这个火箭明显由无数个点组成啊?难倒是火箭的所有点都乘以Translation矩阵?那么计算一个小小的物体的位移岂不是要消耗大量的计算时间?其实差不多可以这么理解,不过不完

2014-03-03 08:18:23 2313

原创 图形学思考 - FPS更新率的比喻

帧率为60FPS的意思就是每秒更新60帧,一帧就是指GPU画一个画面的图案。可以这么比喻吧:GPU相当于一个超级画家, CPU相当于这个超级画家的超级助手,画家每秒画了60幅画,还有时间展示出来给我们看,看完了还把看过的画擦掉,因为画家只有两幅画布(当然到了D3d11可以是3幅画布),展示给我们看一幅画同时擦掉另一幅画,然后画上新的图案,然后再展示给我们看,然后再擦去另一幅画,如此循环。超级助手负责告诉画家,观众在那里,应该把画放在什么地方,应该画多大的尺寸等等。好忙的画家啊。画家有多少时间做这样的

2014-03-03 08:14:58 1896 3

原创 Leetcode Evaluate Reverse Polish Notation

本题就是考查栈的应用。注意细节,很容易过。 3星级的题目吧。1 要push入结果2 两个数的计算顺序不能错,否则答案错误

2014-03-02 08:23:14 1312

原创 Leetcode Word Break

使用动态规划法是很好解决的。时间复杂度是O(n*n)。形成这种思维需要不断锻炼,以前看这道题的时候觉得十分困难,现在终于觉得很容易的了。评价为3到4星级吧。

2014-03-02 08:20:13 1899

原创 GeeksForGeeks - Partition problem

解析为:1 检查数组的总和是否是偶数,如果是基数就返回假2 问题归结为在一个数组中寻找任意数组合的和等于一个数的问题(其中数组的数只能使用一次)。明白点说就是coin change问题(找零钱)1 本博客程序时间效率基本上是一样的,不过实际运行应该快点,找到了找零方案就马上返回了,不用循环结束。2 空间效率使用了O(sum),数组大的话,就节省了大量空间。

2014-03-01 16:13:36 2104

原创 Leetcode Word Ladder II

Leetcode 第一难题,六星级! 帆船酒店来了!难点考点:1 知道什么时候去掉重复,会使用set容器避免重复2 高级层序遍历树应用3 适当时候去掉字典中的单词避免重复4 知道什么时候结束层序5 利用高级数据结构保存结果,本程序使用unordered_map<string, vector<string> >6 使用递归回溯法,利用高级数据结构,构造最终结果每一点几乎都可以成为一个大题,都糅合在一起了,加上各个细节,那么就构成了一个六星级难题了。注意细节:1 上一层的单词要删掉,否则会

2014-03-01 08:47:38 2437 1

OpenGL完美的心形

可以参考本人博客: http://blog.csdn.net/kenden23/article/details/27338943 是一个使用OpenGL FreeGlut画的一个完美的心形。

2014-05-28

简单Windows弹球程序

详细描述,请看下面博客: http://blog.csdn.net/kenden23/article/details/17268877

2013-12-14

第一人称3D镜头框架代码

http://blog.csdn.net/kenden23/article/details/14051187 这个博客讲解的代码框架。讲解的类部分另外下载,可在博客上找。

2013-11-02

第一人称3D镜头类

http://blog.csdn.net/kenden23/article/details/14051187 这个博客讲解的代码,可以实现一个3d漫游第一人称视觉的类。一个镜头类,可以控制3D视觉,实现漫游效果

2013-11-02

算法问题集合源文件 堆排序 吊桶排序 最大子段和等

这个是本博客算法专栏的部分.cpp源文件,方便大家打包下载,如果没有积分的话,可以到我博客粘贴,博客有完整的代码。 http://blog.csdn.net/column/details/billsalgorithm.html?page=1#12944927 这里是部分源文件,暂时没时间全部做好。 可以直接加入项目运行的,建议使用vs2012编译。

2013-10-22

空空如也

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

TA关注的人

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