Menu Sidebar
Menu

July 2015

Calculate Pi 计算n次Pi

一般常用计算Pi的公式有2个, 一个是Nilakantha序列, 另一个是Leibniz序列. 先介绍后一个,Leibinz序列, Leibinz是个神牛, 有多神呢..如果一个人在一个领域到了极限, 我们称之为大牛, 然而神牛是通吃 – -. 到底有多通吃..请自行Wiki..(他的wiki的长度有10个下拉页之长).前言毕. Leibinz给出一个非常简单的计算π的方式, 有多简单呢:请看code public double Leibniz(int times){ double sum = 0; for (int i = 0; i < times; i++) { sum += Math.pow(-1,i) * (double) 4/(2*i+1); } return sum; } 注意, 这里的input是次数. 对应的通项公式为: Nilakantha,是Nilakantha Somayaji发明的, 这人一直研究无穷序列, 贡献嘛…最出名的就是这个公式了, 不过在实际运算中, Nilakantha的速度要比Leibinz快. public double Nilakantha(int times){ double denominator […]

[Google] Serialization and Deserialization BST 二叉树编码和解码

这是一道Google的面试题. 当我第一次看到这题的时候, 第一个感觉, 树, 编码,解码, 那不就是Prufer Code么. 拿起笔就开始写, 后来感觉电面不应该这么复杂, 而且Prufer code对象是Labeled Tree, 这里并没有使用到BST的特殊性质. 于是赶紧回想刷过的题, 突然想起Leetcode上面的编码方式: 这个编码的特点是: Inorder Traversal. Null = # Code容易写. 所以编码的code是: public static String serialize (TreeNode root) { StringBuilder sb = new StringBuilder(); if (root == null) sb.append(“#”); else { sb.append(root.val); sb.append(serialize(root.left)); sb.append(serialize(root.right)); } return sb.toString(); } 解码的特点是: 因为已知编码是Inorder, 所以解码也是Inorder 要注意如果解码到#, 需要return null. […]

安装CHelper插件在Intellij IDEA中.

不知道什么是Intellij IDEA的,用Eclipse的可以自行离去了. CHelper是一个能把Topcoder,Codeforces, Google Code Jam的题拿到本地做, 然后在本地提交的一个插件, 是Egor Kulikov(大牛)编写并维护(维护个毛线…)的. 以前需要去Google Code里下载, 然后调试, 非常繁复. 现在Egor把CHelper做进了一个插件, 使安装非常简单, 也不需要配置什么环境变量了.具体步骤如下: 在Intellij(我用的是商业版)的主页面(非Project页面)里, 选下面的Configure -> Plugins. 选Browse repositories.搜CHelper, 下载, 重启Idea. 在工具栏空白处点右键:, 选Customize Menus and Toolbars 双击Main Toolbar, 然后添加一个Separator: 点到新建的Separator, 然后选Add After,在Plug-ins中找到CHelper, 然后把下面几个都加进去. 点击Edit Project Setting (那个小齿轮), 然后如下设置: 这样对Local Tasks就可以了, 我的目录结构:  如果你玩Topcoder, 需要在Topcoder中的Options -> Editor Preferences中, 选CHelper做Default. 使用CHelper做题时: 如果用Topcoder, 点击, 然后选SRM的题就可以了, 不要忘记编译完后, 需要点击提交. […]

Newer Posts

书脊

这青苔碧瓦堆, 俺曾睡风流觉, 将五十年兴亡看饱.

July 2015
M T W T F S S
 12345
6789101112
13141516171819
20212223242526
2728293031