这些年我做过的项目

安卓Canvas渲染引擎——hEngine

教程收集

欢迎访问hanyeah的blog

14
2019
11

化学方程式自动配平

对于化学方程式配平,人们总结了好多方法,但是万变不离其宗,依据永远都是“质量守恒定律”。

06
2019
08

JavaScript内存管理和优化-Minor GC、Major GC

JavaScript内存管理和优化


30
2019
07

js保留有效数字

原文:https://blog.csdn.net/qq_35134066/article/details/86673458

JavaScript中数字保留有效数字位数的方法有三种:toFixed,toExponential,toPrecision,这三种方法都会把数字转成字符串。

11
2019
07

Alpha 混合:两个半透明色的叠加

原文链接:https://blog.csdn.net/richardbao2000/article/details/2682018

25
2019
04

谷歌图书下载

自己写了个谷歌浏览器插件,用来下载谷歌图书。

25
2019
04

jsonp

JSONP(JSON with Padding) 是一种跨域请求方式。

利用了script 标签可以跨域请求的特点来实现。

17
2019
04

B树

在计算机科学中,B树(英语:B-tree)是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉查找树(binary search tree)一个节点可以拥有最少2个子节点。与自平衡二叉查找树不同,B树适用于读写相对大的数据块的存储系统,例如磁盘。B树减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。

维基百科:B树

17
2019
04

Manacher算法

最长回文子串问题:给定一个字符串,求它的最长回文子串长度。

暴力解法:找到所有子串,验证是否是回文子串,时间复杂度是O(n^3)。

改进算法:遍历一遍字符串,求以每个字符为中心的回文子串长度,时间复杂度是O(n^2)。

用Manacher来解决最长回文子串问题,算法复杂度是O(n)。

Manacher算法属于动态规划,但是如果认为这样的算法才是动态规划,是对动态规划的误解,还会打击学习的积极性,动态规划只是在分治的基础上做了一些优化,《算法导论》里边讲的很好,也可以参考之前的一篇文章:动态规划

22
2019
03

全排列-邻位对换法

邻位对换法

该算法由Johnson-Trotter首先提出,是一个能快速生成全排列的算法。它的下一个全排列总是上一个全排列对换某相邻两位得到的。如果已知n-1个元素的排列,将n插入到排列的不同位置,就得到了n个元素的排列。用这种方法可以产生出任意n个元素的排列。这个方法有一个缺点:为了产生n个元素的排列,我们必须知道并存储所有n-1个元素的排列,然后才能产生出所有n阶排列。  

22
2019
03

全排列-递归法

如果已知n-1个元素的排列,将n插入到排列的不同位置,就得到了n个元素的排列。