最少硬币找零问题的动态规划解与贪心算法解

最少硬币问题找零问题是说,已知某种硬币系统 [Ci, …],以及期望凑齐的找零值 Amount,找到硬币数量最少的那个找零方案:

∑NiCi = Amount 且 ∑Ni 最小

Read More

Share

Red-Black Tree

Catalogue
Share

Binary-Search-Tree in JavaScript

这里用 JavaScript 实现一个二叉搜索树。二叉搜索树可以很方便地进行排序。下面的实现比较简单,很容易就会出现非平衡二叉树。G.M. Adelson-Velsky 和 E.M. Landis 在 1962 年的论文《An Algorithm For The Organization Of Information》中提出了一种可以实现自平衡二叉树,后世称为 AVL 树。

除了 AVL 树,还有很多其他的平衡二叉树的实现,例如 AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中? 就是个不错的入门级参考,可以大致了解这些平衡树的特点、区别。看起来,红黑树是应用最广泛的。

Read More

Share

ImageMagick 简单入门

ImageMagick 是一款可以运行在 Linux/Unix/Windows/MacOS (现在甚至支持 iOS、Android)下的免费开源图片处理程序。使用 ImageMagick 可以进行图片的拉伸、裁剪、缩放、格式转换、生成 GIF 、添加文字/图案等各种操作。

安装

MacOS 下可以方便地使用 Homebrew 进行安装:

1
2
3
4
5
$ brew install imagemagick

# 查看使用帮助
$ man magick
$ man convert

magick 和 convert 应该是同一个程序。

ImageMagick 的最新版本目前已经是 7.* 以上了。建议安装最新版,因为之前它还暴露过了一个严重漏洞,在最新版本里该漏洞是已经修复了的。它的源码放在 Github 上面维护:https://github.com/ImageMagick。

Read More

Share

heap sort using javascript

Catalogue
Share

关于插入排序

Read More

Share

about quick sort algorithm

历史

快速排序算法是由 Tony Hoare 在 1959 年发明的。如果实现得好,那么它的速度可以达到其两个主要竞争者——归并排序与堆排序——的两倍到三倍以上。

在高速的实现中,快排是一个不稳定的算法,即它不能保证原来相等的值的位置不变。

Read More

Share

关于归并排序

概述

归并排序(Merge-Sort),由冯诺依曼于 1945 年发明,是分治法(Divide and Conquer)的经典案例。

JavaScript 实现

代码思路比较清晰:

  • 首先,需要一个执行合并有序数组的函数(将两个有序表合并成一个有序表,称为二路归并)。
  • 然后,对需要排序的数组进行拆分,分别对左右两个子数组进行归并排序,然后合并。这样就形成了递归

Read More

Share

关于脚型与选择足球鞋

Catalogue

我的脚型属于前脚掌比较宽的,耐克的鞋里目前发现刺客比较合脚,一图胜千言(图里的B是刺客):

Share

初涉 Mobile Web 开发

2015年12月至今年6月,我在猫眼做的开发基本都是桌面浏览器项目、B 端产品,技术栈是 Node.js/Koa + Webpack + React.js。从今年7月份开始,趁着一个新的 C 端项目的启动,自己转而投入到移动端 web 开发中。

C 端产品与 B 端产品差异巨大。

Read More

Share