﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-IT技术小屋</title><link>http://www.blogjava.net/menglee/</link><description>秋风秋雨，皆入我心</description><language>zh-cn</language><lastBuildDate>Thu, 09 Apr 2026 02:28:23 GMT</lastBuildDate><pubDate>Thu, 09 Apr 2026 02:28:23 GMT</pubDate><ttl>60</ttl><item><title>一些深度学习库：按Python和C++等语言分类</title><link>http://www.blogjava.net/menglee/archive/2016/11/13/431980.html</link><dc:creator>Meng Lee</dc:creator><author>Meng Lee</author><pubDate>Sat, 12 Nov 2016 16:45:00 GMT</pubDate><guid>http://www.blogjava.net/menglee/archive/2016/11/13/431980.html</guid><wfw:comment>http://www.blogjava.net/menglee/comments/431980.html</wfw:comment><comments>http://www.blogjava.net/menglee/archive/2016/11/13/431980.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/menglee/comments/commentRss/431980.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/menglee/services/trackbacks/431980.html</trackback:ping><description><![CDATA[<h2><div><font color="#333333" face="Microsoft YaHei, FreeSans, Arimo, Droid Sans, wenquanyi micro hei, Hiragino Sans GB, Hiragino Sans GB W3, FontAwesome, sans-serif"><span style="font-size: 10pt; font-weight: 100;">本文介绍了包括 Python、Java、Haskell等在内的一系列编程语言的深度学习库。<br /><br /></span></font></div><div><span style="font-size: 10pt;">Python</span></div><div><ul><li><span style="font-weight: normal; font-size: 12pt; color: #ff00ff;"><a href="http://deeplearning.net/software/theano"><span style="font-size: 10pt;">Theano</span></a></span><span style="font-weight: normal; font-size: 10pt;">是一种用于使用数列来定义和评估数学表达的 Python 库。它可以让 Python 中深度学习算法的编写更为简单。很多其他的库是以 Theano 为基础开发的。</span></li><li><span style="font-weight: normal; font-size: 12pt; color: #ff00ff;"><a href="http://caffe.berkeleyvision.org/"><span style="font-size: 10pt;">Caffe</span></a></span><span style="font-weight: normal; font-size: 10pt;">是一种以表达清晰、高速和模块化为理念建立起来的深度学习框架。它是由伯克利视觉和学习中心（BVLC）和网上社区贡献者共同开发的。谷歌的 DeepDream 人工智能图像处理程序正是建立在 Caffe 框架之上。这个框架是一个 BSD 许可的带有 Python 接口的 C++库。</span></li><li><span style="font-weight: normal; font-size: 12pt; color: #ff00ff;"><a href="https://github.com/dnouri/nolearn"><span style="font-size: 10pt;">nolearn</span></a></span><span style="font-weight: normal; font-size: 10pt;">包含大量其他神经网络库中的包装器和抽象（wrappers and abstractions），其中最值得注意的是 Lasagne，其中也包含一些机器学习的实用模块。</span></li><li><span style="font-weight: normal; font-size: 12pt; color: #ff00ff;"><a href="http://radimrehurek.com/gensim/"><span style="font-size: 10pt;">Genism</span></a></span><span style="font-weight: normal; font-size: 10pt;">是一个部署在 Python 编程语言中的深度学习工具包，用于通过高效的算法处理大型文本集。</span></li><li><span style="font-weight: normal; font-size: 12pt; color: #ff00ff;"><a href="http://chainer.org/"><span style="font-size: 10pt;">Chainer</span></a></span><span style="font-weight: normal; font-size: 10pt;">连接深度学习中的算法与实现，它强劲、灵活而敏锐，是一种用于深度学习的灵活的框架。</span></li><li><span style="font-weight: normal; font-size: 12pt; color: #ff00ff;"><a href="https://github.com/nitishsrivastava/deepnet"><span style="font-size: 10pt;">deepnet</span></a></span><span style="font-weight: normal; font-size: 10pt;">是一种基于 GPU 的深度学习算法的 Python 实现，比如：前馈神经网络、受限玻尔兹曼机、深度信念网络、自编码器、深度玻尔兹曼机和卷积神经网络。</span></li><li><span style="font-weight: normal; font-size: 12pt;"><a href="https://github.com/hannes-brt/hebel"><span style="font-size: 10pt;">Hebel</span></a></span><span style="font-weight: normal; font-size: 10pt;">是一个在 Python 中用于带有神经网络的深度学习的库，它通过 PyCUDA 使用带有 CUDA 的 GPU 加速。它可实现大多数目前最重要的神经网络模型，提供了多种不同的激活函数和训练方式，如动量，Nesterov 动量，退出（dropout）和 前期停止（early stopping）。</span></li><li><span style="font-weight: normal; font-size: 12pt;"><a href="https://github.com/dmlc/cxxnet"><span style="font-size: 10pt;">CXXNET</span></a></span><span style="font-weight: normal; font-size: 10pt;">是一种快速，简明的分布式深度学习框架，它以 MShadow 为基础。它是轻量级可扩展的 C++/CUDA 神经网络工具包，同时拥有友好的 Python/Matlab 界面，可供机器学习的训练和预测使用。</span></li><li><span style="font-weight: normal; font-size: 12pt;"><a href="https://github.com/andersbll/deeppy"><span style="font-size: 10pt;">DeepPy</span></a></span><span style="font-weight: normal; font-size: 10pt;">是一种建立在 Mumpy 之上的 Python 化的深度学习框架。</span></li><li><span style="font-weight: normal; font-size: 12pt;"><a href="https://github.com/vishwa-raman/DeepLearning"><span style="font-size: 10pt;">DeepLearning</span></a></span><span style="font-weight: normal; font-size: 10pt;">是一个用 C++和 Python 开发的深度学习库。</span></li></ul></div><div><span style="font-size: 10pt;">C++</span></div><div><ul><li><span style="font-size: 12pt; font-weight: normal;"><a href="http://eblearn.sourceforge.net/index.shtml"><span style="font-size: 10pt;">eblearn</span></a></span><span style="font-size: 10pt; font-weight: normal;">是一个机器学习的开源 C++库，由纽约大学机器学习实验室的 Yann LeCun 牵头研发。尤其是，按照 GUI、演示和教程来部署的带有基于能量的模型的卷积神经网络。</span></li><li><span style="font-size: 12pt; font-weight: normal;"><a href="http://www.comp.nus.edu.sg/~dbsystem/singa/"><span style="font-size: 10pt;">SINGA</span></a></span><span style="font-size: 10pt; font-weight: normal;">被设计用来进行已有系统中分布式训练算法的普通实现。它由 Apache Software Foundation 提供支持。</span></li></ul></div><div><span style="font-size: 10pt;">Java</span></div><div><ul><li><span style="font-size: 12pt; font-weight: normal;"><a href="http://nd4j.org/"><span style="font-size: 10pt;">N-Dimensional Arrays for Java (ND4J)</span></a></span><span style="font-size: 10pt; font-weight: normal;">是一种为 JVM 设计的科学计算库。它们被应用在生产环境中，这就意味着路径被设计成可以最小的 RAM 内存需求来快速运行。</span></li><li><span style="font-size: 12pt; font-weight: normal;"><a href="http://deeplearning4j.org/"><span style="font-size: 10pt;">Deeplearning4j</span></a></span><span style="font-size: 10pt; font-weight: normal;">是第一个为 Java 和 Scala 编写的消费级开元分布式深度学习库。它被设计成在商业环境中使用，而非研究工具。</span></li><li><span style="font-size: 12pt; font-weight: normal;"><a href="http://www.heatonresearch.com/encog"><span style="font-size: 10pt;">Encog</span></a></span><span style="font-size: 10pt; font-weight: normal;">是一种先进的机器学习框架，支持支持向量机（Support Vector Machines），人工神经网络（Artificial Neural Networks），基因编程（Genetic Programming），贝叶斯网络（Bayesian Networks），隐马尔科夫模型（Hidden Markov Models）和 遗传算法（Genetic Algorithms）。</span></li></ul></div><div><span style="font-size: 10pt;">Lua</span></div><div><ul><li><span style="font-size: 12pt; font-weight: normal;"><a href="http://torch.ch/"><span style="font-size: 10pt;">Torch</span></a></span><span style="font-size: 10pt; font-weight: normal;">是一种科学计算框架，可支持多种计算机学习算法。</span></li></ul></div><div><span style="font-size: 10pt;">Haskell</span></div><div><ul><li><span style="font-size: 12pt; font-weight: normal;"><a href="https://github.com/ajtulloch/dnngraph"><span style="font-size: 10pt;">DNNGraph</span></a></span><span style="font-size: 10pt; font-weight: normal;">是一个用 Haskell 编写的深度神经网络生成 DSL。</span></li></ul></div><div><span style="font-size: 10pt;">.NET</span></div><div><ul><li><span style="font-size: 12pt; font-weight: normal;"><a href="http://cran.um.ac.ir/web/packages/darch/index.html"><span style="font-size: 10pt;">Accord.NET</span></a></span><span style="font-size: 10pt; font-weight: normal;">是一种.NET 机器学习框架，包含声音和图像处理库，它完全由 C# 编写。它是一种为开发生产级的计算机视觉、计算机听觉、信号处理和统计应用而设计的完整框架。</span></li></ul></div><div><span style="font-size: 10pt;">R</span></div><div><ul><li><span style="font-size: 12pt; font-weight: normal;"><a href="http://cran.um.ac.ir/web/packages/darch/index.html"><span style="font-size: 10pt;">darch</span></a></span><span style="font-size: 10pt; font-weight: normal;">包可以用于建立多层神经网络（深层结构）。其中的训练方式包括使用对比发散法进行提前训练，或使用通常的训练方法（如反向传播和共轭梯度）进行一些微调。</span></li><li><span style="font-size: 12pt; font-weight: normal;"><a href="https://cran.r-project.org/web/packages/deepnet/index.html"><span style="font-size: 10pt;">deepnet</span></a></span><span style="font-size: 10pt; font-weight: normal;">实现了一些深度学习架构和神经网络算法，包括 BP、RBM、DBN、深度自编码器等等。</span></li></ul></div></h2><img src ="http://www.blogjava.net/menglee/aggbug/431980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/menglee/" target="_blank">Meng Lee</a> 2016-11-13 00:45 <a href="http://www.blogjava.net/menglee/archive/2016/11/13/431980.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我是如何进入谷歌</title><link>http://www.blogjava.net/menglee/archive/2014/06/13/414689.html</link><dc:creator>Meng Lee</dc:creator><author>Meng Lee</author><pubDate>Thu, 12 Jun 2014 18:00:00 GMT</pubDate><guid>http://www.blogjava.net/menglee/archive/2014/06/13/414689.html</guid><wfw:comment>http://www.blogjava.net/menglee/comments/414689.html</wfw:comment><comments>http://www.blogjava.net/menglee/archive/2014/06/13/414689.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/menglee/comments/commentRss/414689.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/menglee/services/trackbacks/414689.html</trackback:ping><description><![CDATA[<span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">今天，终于有时间静下心来回顾过去两年来所做的事情，感慨万千，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">一时之间竟不知从何说起。两年以来，遇到的困难着实不少，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">但每每遭遇挫折与不顺之后，却往往能柳暗花明，遇到新的转机，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">让我真真切切地感受到了功夫不负有心人这句话的含意。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">一、为什么要出国</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">其实，之前从来没有考虑过要出国，更没有想过能直接出国工作。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">回想一下，这个决定的做出，多半还是缘于自己骨子里的不安分。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我从很大程度上来说是一个闲不住的人，从小学、中学、</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">大学到研究生，我几乎每天都有明确的目标。然而，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">2013年从公司到事业单位工作以后，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我的生活发生了巨大地转变。简单的工作、空洞的公文、</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">无聊的活动占据了我全部的工作任务。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">有段时间几乎天天写材料搞活动。领导经常夸我材料写得又快又好，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">活动也搞得有声有色，心里感觉很有成就感。然而，时间一长，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">逐渐发现那些公文永远是一个套路，以至于我分门别类，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">摸索出了几个万能模板。而活动则千篇一律，让人疲于应付。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我甚至可以看到六十岁退休时我在干什么，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">于是一阵恐惧感常常会莫名袭来，因为我不安分、不满足于此。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我不能放弃所学所长，我不能庸庸碌碌在这里度过未来的几十年，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我还有梦想，我还要登高看世界。为了这个，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我走过了不平凡的两年。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">二、如何出国</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">对于普通人来说，出国大致有三条路。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">第一条路是申请去国外留学，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">取得学位之后以应届毕业生的身份找工作，然后留在国外生活。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">这是一条比较稳妥、简便的路，走这条路的人最多。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">第二条路是先进入跨国公司的中国分公司工作一段时间，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">然后找机会外派到国外总部工作。走这条路的要求比较多，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">首先要能够进入比较大的跨国公司工作，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">其次这个公司愿意将中国员工transfer到国外，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">同时还要外国总部有部门愿意接收你，所以还是需要一些运气。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">但是，如果成功，好处也显而易见。省去了读书的时间和学费，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">降低了家庭负担，对于家境一般的人是非常好的选择。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">第三条路是直接参加外国公司的面试，通过之后直接去国外工作。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">这条路要求最高，需要通过外国公司严格的面试，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">另外还要能够成功取得签证（美国工作签证就需要抽签）。因此，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">走这条路更需要实力、机遇和运气。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">鉴于第三条路非常难走，为了保证成功，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我选择了同时申请学校和参加外国公司面试的办法，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">这也注定了我将付出更多的艰苦努力。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">三、申请学校</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">申请学校从准备到最终完成，我大概用了一年时间。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">其间参加了三次GRE和一次托福考试。回想准备的过程，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">最大的敌人就是自己，最重要的法宝就是坚持坚持再坚持。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">记得第一次考GRE没有取得理想的成绩，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">因为是第一次参加英语考试，心情非常失落。幸亏当时有女朋友（</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">现在的老婆）的鼓励，我继续复习没有放弃。经过一个月的复习，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">取得了非常不错的托福成绩。记得托福出成绩的那天，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我紧张得不敢查，点开页面的那一刻，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我都不敢相信居然能有这么不错的成绩。特别是听力，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">考试的时候觉得好几个都没有听清楚，最后居然有27分，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">真是不可思议，可见功夫不负有心人，付出总有回报的。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">有了英语成绩之后，就是撰写申请文书。这方面我完全没有经验，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">所有的信息全部是通过一亩三分地论坛获得的。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">这个论坛信息非常丰富，基本上所有申请相关的内容都有涉及。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我每天都会花一些时间浏览别人的帖子，为自己定位选校，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">找文书灵感等等。非常感谢我的本科和研究生导师，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">还有蒋志诚为我递推荐信，没有你们的帮助，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我不可能完成申请工作。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">最后，我申请了美国和加拿大的十五所学校的计算机专业的研究生，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">拿到了CMU、USC和多伦多大学的offer。其中，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">CMU的Data Science program应该是世界数一数二的，录取率非常低，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">毕业后的去向也非常好，大多数都可以进入美国一流公司工作。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">多大也是加拿大排名第一的学校，计算机的就业也非常好。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">四、Facebook的面试</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">参加Facebook的面试也完全是无意的，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">在Linkedin上收到了Facebook HR的邀请信，于是也没有怎么准备就做了电面，居然反馈非常好，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">马上就给我安排了onsite面试，地点是印度的海得拉巴。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">但是，始终是没有做什么准备，而且和谷歌不一样的是，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">HR办事效率实在太高，每一轮间隔都非常短，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">导致我根本没有时间热身一下，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">连leetcode都没有做过就匆匆参加面试了，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">最终没有如愿通过面试。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">不过，这次面试还是很有收获。第一次出国，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">第一次参加美国公司全英文面试，学到了太多，积累了经验，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">可以说如果没有Facebook的失败，我是不可能进入谷歌的。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">五、Google的面试</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">参加谷歌的面试可以说完全是老婆的怂恿。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">从印度参加完Facebook面试回来之后，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我就开始专心于学校申请了。但是，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">老婆建议我试试面一下Google。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">由于Facebook的失利和Google近乎苛刻的面试流程，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我开始是抗拒参加的。最后，在老婆的一再要求下，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我终于找了一个在谷歌上海工作的师兄做了内推。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">四月底我收到了谷歌北京HR的第一通电话，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">也正式拉开了我为期一年的面试流程。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">和HR通电话不久，我进行了第一次电话面试。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">谷歌的电话面试和Facebook差不多，就是面试官打过来，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">把题目口述并且写在Google Doc上，然后我把程序写在Google Doc上。第一次电面的题目不难，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">但谷歌对代码效率和清晰度的要求远远超出了我的想像。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">第一轮面得磕磕绊绊，但是幸好面试官是中国人，非常nice，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">没有让我fail。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">于是，我又被要求进行第二次电面。期间由于面试官临时有事爽约，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我等了差不多一个月。但是，也就是这一个月，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我努力做了一些准备，虽然面试依旧不是十全十美，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">但是我还是有惊无险地进入到了onsite面试环节。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">虽然可以onsite面试了，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">但是我依旧对进入谷歌不报任何希望，因为我清楚的知道，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">谷歌面试实在是太难了，onsite面试的挑战将远远大于电面。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">因此，我去北京面试完全是想做一次免费旅游。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">面试前一天还许久不见的万威夫妇吃饭，聊得很开心，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">完全没有把面试放在心上。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">也许是放松的原因，我前一天晚上睡得很好，第二天我精神非常好。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">不过谷歌毕竟是谷歌，面试第一轮一上来就给了我一个下马威。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">一个coding题一个设计题，表面上很简单，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">但是做出来总是有这样那样的问题，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">第一轮完了之后我基本打算回家了。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">但是，不知道为什么，从第二轮开始，就越来越顺利，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">coding做得非常好，基本上是一次写完，没有涂改，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">也没有被面试官找到大的bug。突然之间，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">隐隐感觉出现了一丝希望。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">四轮过后，我结束了第一次onsite面试。但是，三天之后，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我被告知由于设计题做得不好，我被要求进行一次加面，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">地点在上海。于是，我又在上海做了一次面试，只有一个设计题。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我感觉答得还可以，但是心情真的是忐忑不安，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">特别是接下来的一个礼拜，几乎是坐立不安。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">记得是一个礼拜之后的礼拜五中午，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我正做准备主持下午的道德讲堂，突然接到了一个010的电话，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我知道是谷歌的电话。接通电话的那一刻，空气都几乎要凝固了，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">当听到通过HC的消息时，我激动得不能自已。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">不可能完成的任务居然完成了，虽然不知道能不能去美国总部工作，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">但是能进入谷歌已经非常不容易了，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">而且谷歌非常鼓励transfer去美国工作，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">因此机会还是很多的。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">然而，让我没有想到的是，接下来的team match却异常艰难，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">陆陆续续几个team都没有成功match上。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">转眼就到了2014年春季，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">半年的等待让我对何时进入谷歌非常悲观，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">加上申请学校工作十分繁重，我基本没有关注这个事情。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">就在我快要放弃的时候，拿到了美国一个公司的offer，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">他们答应给我办H1B签证。于是，我把这个情况告诉了谷歌，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">要求他们尽快给找到team，不然我就去美国了。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">结果谷歌居然在三天之内为我match上了英国office的一</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">个team，让人不得不感叹还是要offer多才好啊！于是，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我又经过了近三个月的签证办理流程，终于要启程赴英了。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">回顾两年来的努力，终于要实现自己的梦想了，感慨万千。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">在短短的人生中，能有这一段不寻常的经历，我觉得十分幸运。</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">展望未来，我想读万卷书不如行万里路，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">未来希望能够利用在伦敦工作的机会，尽量多去欧洲各国走走，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">丰富自己的阅历，开拓自己的眼界。</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">最后要感谢老婆一直以来的支持和鼓励，你一直是我前进的动力；</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">其次要感谢父母的不理解和不支持，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">你们的反对让我更加完善了自己的计划，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">逼着我找到了一条最好的出路；还要感谢师长和朋友们的帮助，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">感谢杨老师和沈老师还有蒋志诚不厌其烦地帮我递推荐信，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">感谢万威夫妇多次在北京款待我，没有你们的美食，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">我是不可能完成面试的；还有许多帮助过我的人，</span><wbr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;"><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">在这里就不能一一感谢了。</span><br /><img src ="http://www.blogjava.net/menglee/aggbug/414689.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/menglee/" target="_blank">Meng Lee</a> 2014-06-13 02:00 <a href="http://www.blogjava.net/menglee/archive/2014/06/13/414689.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Leetcode] Trapping Rain Water</title><link>http://www.blogjava.net/menglee/archive/2014/01/14/408898.html</link><dc:creator>Meng Lee</dc:creator><author>Meng Lee</author><pubDate>Tue, 14 Jan 2014 01:16:00 GMT</pubDate><guid>http://www.blogjava.net/menglee/archive/2014/01/14/408898.html</guid><wfw:comment>http://www.blogjava.net/menglee/comments/408898.html</wfw:comment><comments>http://www.blogjava.net/menglee/archive/2014/01/14/408898.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/menglee/comments/commentRss/408898.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/menglee/services/trackbacks/408898.html</trackback:ping><description><![CDATA[<div>算法很简单，核心思想是：对某个值A[i]来说，能trapped的最多的water取决于在i之前最高的值leftMostHeight[i]和在i右边的最高的值rightMostHeight[i]。（均不包含自身）。如果min(left,right) &gt; A[i]，那么在i这个位置上能trapped的water就是min(left,right) &#8211; A[i]。</div><div></div><div>有了这个想法就好办了，第一遍从左到右计算数组leftMostHeight，第二遍从右到左计算rightMostHeight，在第二遍的同时就可以计算出i位置的结果了，而且并不需要开空间来存放rightMostHeight数组。</div><div></div><div>时间复杂度是O(n)，只扫了两遍。<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;TrappingRainWater&nbsp;{<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;trap(<span style="color: #0000FF; ">int</span>&nbsp;A[],&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;n)&nbsp;{<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(n&nbsp;&lt;=&nbsp;2)<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;lmh&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">int</span>[n];<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmh[0]&nbsp;=&nbsp;0;<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;maxh&nbsp;=&nbsp;A[0];<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;&nbsp;n;&nbsp;++i)&nbsp;{<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmh[i]&nbsp;=&nbsp;maxh;<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(maxh&nbsp;&lt;&nbsp;A[i])<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxh&nbsp;=&nbsp;A[i];<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;trapped&nbsp;=&nbsp;0;<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxh&nbsp;=&nbsp;A[n&nbsp;-&nbsp;1];<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;n&nbsp;-&nbsp;2;&nbsp;i&nbsp;&gt;&nbsp;0;&nbsp;--i)&nbsp;{<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;left&nbsp;=&nbsp;lmh[i];<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;right&nbsp;=&nbsp;maxh;<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;container&nbsp;=&nbsp;Math.min(left,&nbsp;right);<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(container&nbsp;&gt;&nbsp;A[i])&nbsp;{<br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trapped&nbsp;+=&nbsp;container&nbsp;-&nbsp;A[i];<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(maxh&nbsp;&lt;&nbsp;A[i])<br /><span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxh&nbsp;=&nbsp;A[i];<br /><span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;trapped;<br /><span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">28</span>&nbsp;}</div></div><img src ="http://www.blogjava.net/menglee/aggbug/408898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/menglee/" target="_blank">Meng Lee</a> 2014-01-14 09:16 <a href="http://www.blogjava.net/menglee/archive/2014/01/14/408898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Leetcode] Permutation Sequence</title><link>http://www.blogjava.net/menglee/archive/2014/01/07/408642.html</link><dc:creator>Meng Lee</dc:creator><author>Meng Lee</author><pubDate>Tue, 07 Jan 2014 08:06:00 GMT</pubDate><guid>http://www.blogjava.net/menglee/archive/2014/01/07/408642.html</guid><wfw:comment>http://www.blogjava.net/menglee/comments/408642.html</wfw:comment><comments>http://www.blogjava.net/menglee/archive/2014/01/07/408642.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/menglee/comments/commentRss/408642.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/menglee/services/trackbacks/408642.html</trackback:ping><description><![CDATA[<div>The set [1,2,3,&#8230;,n] contains a total of n! unique permutations.</div><div></div><div>By listing and labeling all of the permutations in order,</div><div>We get the following sequence (ie, for n = 3):</div><div></div><div>"123"</div><div>"132"</div><div>"213"</div><div>"231"</div><div>"312"</div><div>"321"</div><div>Given n and k, return the kth permutation sequence.</div><div></div><div>Note: Given n will be between 1 and 9 inclusive.<br /><br /><div>这道题其实有很强的规律可循。首先，n个元素的排列总数是n!。在下面的分析中，让k的范围是0 &lt;= k &lt; n!。（题目代码实际上是1&lt;=k&lt;=n!)<br />可以看到一个规律，就是这n！个排列中，第一位的元素总是(n-1)!一组出现的，也就说如果p = k / (n-1)!，那么排列的最开始一个元素一定是arr[p]。</div><div>这个规律可以类推下去，在剩余的n-1个元素中逐渐挑选出第二个，第三个，...，到第n个元素。程序就结束。</div><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #008000; ">&nbsp;*&nbsp;The&nbsp;set&nbsp;[1,2,3,&#8230;,n]&nbsp;contains&nbsp;a&nbsp;total&nbsp;of&nbsp;n!&nbsp;unique&nbsp;permutations.<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #008000; ">&nbsp;*&nbsp;<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #008000; ">&nbsp;*&nbsp;By&nbsp;listing&nbsp;and&nbsp;labeling&nbsp;all&nbsp;of&nbsp;the&nbsp;permutations&nbsp;in&nbsp;order,&nbsp;We&nbsp;get&nbsp;the<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #008000; ">&nbsp;*&nbsp;following&nbsp;sequence&nbsp;(ie,&nbsp;for&nbsp;n&nbsp;=&nbsp;3):<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #008000; ">&nbsp;*&nbsp;<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #008000; ">&nbsp;*&nbsp;"123"&nbsp;"132"&nbsp;"213"&nbsp;"231"&nbsp;"312"&nbsp;"321"&nbsp;Given&nbsp;n&nbsp;and&nbsp;k,&nbsp;return&nbsp;the&nbsp;kth&nbsp;permutation<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #008000; ">&nbsp;*&nbsp;sequence.<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #008000; ">&nbsp;*&nbsp;<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #008000; ">&nbsp;*&nbsp;Note:&nbsp;Given&nbsp;n&nbsp;will&nbsp;be&nbsp;between&nbsp;1&nbsp;and&nbsp;9&nbsp;inclusive.<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #008000; ">&nbsp;*&nbsp;<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #008000; ">&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">13</span>&nbsp;<br /><span style="color: #008080; ">14</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;PermutationSequence&nbsp;{<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;getPermutation(<span style="color: #0000FF; ">int</span>&nbsp;n,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;k)&nbsp;{<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>[]&nbsp;arr&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">char</span>[n];<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;pro&nbsp;=&nbsp;1;<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;n;&nbsp;++i)&nbsp;{<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[i]&nbsp;=&nbsp;(<span style="color: #0000FF; ">char</span>)&nbsp;('1'&nbsp;+&nbsp;i);<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pro&nbsp;*=&nbsp;(i&nbsp;+&nbsp;1);<br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;=&nbsp;k&nbsp;-&nbsp;1;<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;%=&nbsp;pro;<br /><span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pro&nbsp;/=&nbsp;n;<br /><span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;n&nbsp;-&nbsp;1;&nbsp;++i)&nbsp;{<br /><span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;selectI&nbsp;=&nbsp;k&nbsp;/&nbsp;pro;<br /><span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;=&nbsp;k&nbsp;%&nbsp;pro;<br /><span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pro&nbsp;/=&nbsp;(n&nbsp;-&nbsp;i&nbsp;-&nbsp;1);<br /><span style="color: #008080; ">29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;temp&nbsp;=&nbsp;arr[selectI&nbsp;+&nbsp;i];<br /><span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;j&nbsp;=&nbsp;selectI;&nbsp;j&nbsp;&gt;&nbsp;0;&nbsp;--j)&nbsp;{<br /><span style="color: #008080; ">31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[i&nbsp;+&nbsp;j]&nbsp;=&nbsp;arr[i&nbsp;+&nbsp;j&nbsp;-&nbsp;1];<br /><span style="color: #008080; ">32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">33</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[i]&nbsp;=&nbsp;(<span style="color: #0000FF; ">char</span>)&nbsp;temp;<br /><span style="color: #008080; ">34</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;String.valueOf(arr);<br /><span style="color: #008080; ">36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">37</span>&nbsp;}<br /><span style="color: #008080; ">38</span>&nbsp;</div></div><img src ="http://www.blogjava.net/menglee/aggbug/408642.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/menglee/" target="_blank">Meng Lee</a> 2014-01-07 16:06 <a href="http://www.blogjava.net/menglee/archive/2014/01/07/408642.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Leetcode] Lowest Common Ancestor of a Binary Search Tree (BST) &amp;&amp; Lowest Common Ancestor of Binary Tree</title><link>http://www.blogjava.net/menglee/archive/2014/01/06/408544.html</link><dc:creator>Meng Lee</dc:creator><author>Meng Lee</author><pubDate>Mon, 06 Jan 2014 01:32:00 GMT</pubDate><guid>http://www.blogjava.net/menglee/archive/2014/01/06/408544.html</guid><wfw:comment>http://www.blogjava.net/menglee/comments/408544.html</wfw:comment><comments>http://www.blogjava.net/menglee/archive/2014/01/06/408544.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/menglee/comments/commentRss/408544.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/menglee/services/trackbacks/408544.html</trackback:ping><description><![CDATA[<div><div>Lowest Common Ancestor of a Binary Search Tree (BST)</div><div></div><div>Given a binary search tree (BST), find the lowest common ancestor of two given nodes in the BST.</div><div></div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp;_______6______</div><div>&nbsp; &nbsp; &nbsp; / &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\</div><div>&nbsp; &nbsp;___2__ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;___8__</div><div>&nbsp; / &nbsp; &nbsp; &nbsp;\ &nbsp; &nbsp; &nbsp; &nbsp;/ &nbsp; &nbsp; &nbsp;\</div><div>&nbsp; 0 &nbsp; &nbsp; &nbsp;_4 &nbsp; &nbsp; &nbsp; 7 &nbsp; &nbsp; &nbsp; 9</div><div>&nbsp; &nbsp; &nbsp; &nbsp; / &nbsp;\</div><div>&nbsp; &nbsp; &nbsp; &nbsp; 3 &nbsp; 5</div><div>Using the above tree as an example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6.&nbsp;</div><div>But how about LCA of nodes 2 and 4? Should it be 6 or 2?</div><div></div><div>According to the definition of LCA on Wikipedia: &#8220;The lowest common ancestor is defined between&nbsp;</div><div>two nodes v and w as the lowest node in T that has both v and w as descendants (where we allow a&nbsp;</div><div>node to be a descendant of itself).&#8221; Since a node can be a descendant of itself, the LCA of 2 and&nbsp;</div><div>4 should be 2, according to this definition.</div><div></div><div>Hint:</div><div>A top-down walk from the root of the tree is enough.</div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;LowestCommonAncestorOfaBinarySearchTree&nbsp;{<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;TreeNode&nbsp;LCA(TreeNode&nbsp;root,&nbsp;TreeNode&nbsp;p,&nbsp;TreeNode&nbsp;q)&nbsp;{<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(root&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>&nbsp;||&nbsp;p&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>&nbsp;||&nbsp;q&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(Math.max(p.val,&nbsp;q.val)&nbsp;&lt;&nbsp;root.val)<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;LCA(root.left,&nbsp;p,&nbsp;q);<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(Math.min(p.val,&nbsp;q.val)&nbsp;&gt;&nbsp;root.val)<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;LCA(root.right,&nbsp;p,&nbsp;q);<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;root;<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">11</span>&nbsp;}</div><br /><br />Given a binary tree, find the lowest common ancestor of two given nodes in the tree.</div><div>&nbsp;</div><div>&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; _______3______</div><div>&nbsp; &nbsp; &nbsp; &nbsp;/ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\</div><div>&nbsp; &nbsp; ___5__ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;___1__</div><div>&nbsp; &nbsp;/ &nbsp; &nbsp; &nbsp;\ &nbsp; &nbsp; &nbsp; &nbsp;/ &nbsp; &nbsp; &nbsp;\</div><div>&nbsp; 6 &nbsp; &nbsp; &nbsp;_2 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp; &nbsp; 8</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/ &nbsp;\</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;7 &nbsp; 4</div><div>If you are not so sure about the definition of lowest common ancestor (LCA), please refer to my previous&nbsp;</div><div>post: Lowest Common Ancestor of a Binary Search Tree (BST) or the definition of LCA here. Using the tree&nbsp;</div><div>above as an example, the LCA of nodes 5 and 1 is 3. Please note that LCA for nodes 5 and 4 is 5.</div><div>&nbsp;</div><div>Hint:</div><div>Top-down or bottom-up? Consider both approaches and see which one is more efficient.<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;LowestCommonAncestorOfBinaryTree&nbsp;{<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;TreeNode&nbsp;LCA(TreeNode&nbsp;root,&nbsp;TreeNode&nbsp;p,&nbsp;TreeNode&nbsp;q)&nbsp;{<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(root&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(root&nbsp;==&nbsp;p&nbsp;||&nbsp;root&nbsp;==&nbsp;q)<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;root;<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TreeNode&nbsp;left&nbsp;=&nbsp;LCA(root.left,&nbsp;p,&nbsp;q);<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TreeNode&nbsp;right&nbsp;=&nbsp;LCA(root.right,&nbsp;p,&nbsp;q);<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(left&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>&nbsp;&amp;&amp;&nbsp;right&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;root;<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;left&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>&nbsp;?&nbsp;left&nbsp;:&nbsp;right;<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">13</span>&nbsp;}</div></div><img src ="http://www.blogjava.net/menglee/aggbug/408544.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/menglee/" target="_blank">Meng Lee</a> 2014-01-06 09:32 <a href="http://www.blogjava.net/menglee/archive/2014/01/06/408544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Leetcode] Scramble String</title><link>http://www.blogjava.net/menglee/archive/2014/01/05/408521.html</link><dc:creator>Meng Lee</dc:creator><author>Meng Lee</author><pubDate>Sun, 05 Jan 2014 04:33:00 GMT</pubDate><guid>http://www.blogjava.net/menglee/archive/2014/01/05/408521.html</guid><wfw:comment>http://www.blogjava.net/menglee/comments/408521.html</wfw:comment><comments>http://www.blogjava.net/menglee/archive/2014/01/05/408521.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/menglee/comments/commentRss/408521.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/menglee/services/trackbacks/408521.html</trackback:ping><description><![CDATA[<div>Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursively.</div><div></div><div>Below is one possible representation of s1 = "great":</div><div></div><div>&nbsp; &nbsp; great</div><div>&nbsp; &nbsp;/ &nbsp; &nbsp;\</div><div>&nbsp; gr &nbsp; &nbsp;eat</div><div>&nbsp;/ \ &nbsp; &nbsp;/ &nbsp;\</div><div>g &nbsp; r &nbsp;e &nbsp; at</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/ \</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a &nbsp; t</div><div>To scramble the string, we may choose any non-leaf node and swap its two children.</div><div></div><div>For example, if we choose the node "gr" and swap its two children, it produces a scrambled string "rgeat".</div><div></div><div>&nbsp; &nbsp; rgeat</div><div>&nbsp; &nbsp;/ &nbsp; &nbsp;\</div><div>&nbsp; rg &nbsp; &nbsp;eat</div><div>&nbsp;/ \ &nbsp; &nbsp;/ &nbsp;\</div><div>r &nbsp; g &nbsp;e &nbsp; at</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/ \</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a &nbsp; t</div><div>We say that "rgeat" is a scrambled string of "great".</div><div></div><div>Similarly, if we continue to swap the children of nodes "eat" and "at", it produces a scrambled string "rgtae".</div><div></div><div>&nbsp; &nbsp; rgtae</div><div>&nbsp; &nbsp;/ &nbsp; &nbsp;\</div><div>&nbsp; rg &nbsp; &nbsp;tae</div><div>&nbsp;/ \ &nbsp; &nbsp;/ &nbsp;\</div><div>r &nbsp; g &nbsp;ta &nbsp;e</div><div>&nbsp; &nbsp; &nbsp; &nbsp;/ \</div><div>&nbsp; &nbsp; &nbsp; t &nbsp; a</div><div>We say that "rgtae" is a scrambled string of "great".</div><div></div><div>Given two strings s1 and s2 of the same length, determine if s2 is a scrambled string of s1.<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;ScrambleString&nbsp;{<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;isScramble(String&nbsp;s1,&nbsp;String&nbsp;s2)&nbsp;{<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(s1.length()&nbsp;!=&nbsp;s2.length())<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">false</span>;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(s1.equals(s2))<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;A&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">int</span>[26];<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;s1.length();&nbsp;i++)&nbsp;{<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++A[s1.charAt(i)&nbsp;-&nbsp;'a'];<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">12</span>&nbsp;<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt;&nbsp;s2.length();&nbsp;j++)&nbsp;{<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--A[s2.charAt(j)&nbsp;-&nbsp;'a'];<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">16</span>&nbsp;<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;k&nbsp;=&nbsp;0;&nbsp;k&nbsp;&lt;&nbsp;26;&nbsp;k++)&nbsp;{<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(A[k]&nbsp;!=&nbsp;0)<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">false</span>;<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">21</span>&nbsp;<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;&nbsp;s1.length();&nbsp;i++)&nbsp;{<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;result&nbsp;=&nbsp;isScramble(s1.substring(0,&nbsp;i),&nbsp;s2.substring(0,&nbsp;i))<br /><span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;isScramble(s1.substring(i),&nbsp;s2.substring(i));<br /><span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;result<br /><span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;(isScramble(s1.substring(0,&nbsp;i),<br /><span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s2.substring(s2.length()&nbsp;-&nbsp;i,&nbsp;s2.length()))&nbsp;&amp;&amp;&nbsp;isScramble(<br /><span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s1.substring(i),&nbsp;s2.substring(0,&nbsp;s2.length()&nbsp;-&nbsp;i)));<br /><span style="color: #008080; ">29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(result)<br /><span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;<br /><span style="color: #008080; ">31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">false</span>;<br /><span style="color: #008080; ">33</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">34</span>&nbsp;}</div></div><img src ="http://www.blogjava.net/menglee/aggbug/408521.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/menglee/" target="_blank">Meng Lee</a> 2014-01-05 12:33 <a href="http://www.blogjava.net/menglee/archive/2014/01/05/408521.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Leetcode] Largest Rectangle in Histogram</title><link>http://www.blogjava.net/menglee/archive/2014/01/05/408520.html</link><dc:creator>Meng Lee</dc:creator><author>Meng Lee</author><pubDate>Sun, 05 Jan 2014 04:31:00 GMT</pubDate><guid>http://www.blogjava.net/menglee/archive/2014/01/05/408520.html</guid><wfw:comment>http://www.blogjava.net/menglee/comments/408520.html</wfw:comment><comments>http://www.blogjava.net/menglee/archive/2014/01/05/408520.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/menglee/comments/commentRss/408520.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/menglee/services/trackbacks/408520.html</trackback:ping><description><![CDATA[<div>Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.</div><div></div><div>Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3].</div><div></div><div>The largest rectangle is shown in the shaded area, which has area = 10 unit.</div><div></div><div>For example,</div><div>Given height = [2,1,5,6,2,3],</div><div>return 10.<br /><br />本题需要使用栈维护一个高度单调递增的序列下标，如果遇到一个元素比当前栈顶元素高度小，那么出栈，并计算当前最大面积。如果栈为空，需要特殊考虑。<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;LargestRectangleinHistogram&nbsp;{<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;largestRectangleArea(<span style="color: #0000FF; ">int</span>[]&nbsp;height)&nbsp;{<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stack&lt;Integer&gt;&nbsp;stack&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Stack&lt;Integer&gt;();<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;maxArea&nbsp;=&nbsp;0;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;h&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">int</span>[height.length&nbsp;+&nbsp;1];<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h&nbsp;=&nbsp;Arrays.copyOf(height,&nbsp;height.length&nbsp;+&nbsp;1);<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(i&nbsp;&lt;&nbsp;h.length)&nbsp;{<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(stack.isEmpty()&nbsp;||&nbsp;h[stack.peek()]&nbsp;&lt;=&nbsp;h[i])&nbsp;{<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stack.push(i++);<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;t&nbsp;=&nbsp;stack.pop();<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxArea&nbsp;=&nbsp;Math.max(maxArea,&nbsp;h[t]&nbsp;*&nbsp;(stack.isEmpty()&nbsp;?&nbsp;i&nbsp;:&nbsp;i&nbsp;-&nbsp;stack.peek()&nbsp;-&nbsp;1));<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;maxArea;<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">18</span>&nbsp;}</div></div><img src ="http://www.blogjava.net/menglee/aggbug/408520.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/menglee/" target="_blank">Meng Lee</a> 2014-01-05 12:31 <a href="http://www.blogjava.net/menglee/archive/2014/01/05/408520.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Leetcode] Binary Tree Inorder Traversal</title><link>http://www.blogjava.net/menglee/archive/2014/01/04/408477.html</link><dc:creator>Meng Lee</dc:creator><author>Meng Lee</author><pubDate>Sat, 04 Jan 2014 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/menglee/archive/2014/01/04/408477.html</guid><wfw:comment>http://www.blogjava.net/menglee/comments/408477.html</wfw:comment><comments>http://www.blogjava.net/menglee/archive/2014/01/04/408477.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/menglee/comments/commentRss/408477.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/menglee/services/trackbacks/408477.html</trackback:ping><description><![CDATA[<div>Given a binary tree, return the inorder traversal of its nodes' values.</div><div></div><div>For example:</div><div>Given binary tree {1,#,2,3},</div><div>&nbsp; &nbsp;1</div><div>&nbsp; &nbsp; \</div><div>&nbsp; &nbsp; &nbsp;2</div><div>&nbsp; &nbsp; /</div><div>&nbsp; &nbsp;3</div><div>return [1,3,2].</div><div></div><div>Note: Recursive solution is trivial, could you do it iteratively?<br /><br />切记p节点初始时指向root.left。代码如下：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;BinaryTreeInorderTraversal&nbsp;{<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;ArrayList&lt;Integer&gt;&nbsp;inorderTraversal(TreeNode&nbsp;root)&nbsp;{<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;Integer&gt;&nbsp;inOrder&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ArrayList&lt;Integer&gt;();<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(root&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;inOrder;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stack&lt;TreeNode&gt;&nbsp;s&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Stack&lt;TreeNode&gt;();<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.add(root);<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TreeNode&nbsp;p&nbsp;=&nbsp;root.left;<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(!s.empty())&nbsp;{<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(p&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.add(p);<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;p.left;<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TreeNode&nbsp;n&nbsp;=&nbsp;s.pop();<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inOrder.add(n.val);<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;n.right;<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(p&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.add(p);<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;p.left;<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;inOrder;<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">24</span>&nbsp;}</div></div><img src ="http://www.blogjava.net/menglee/aggbug/408477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/menglee/" target="_blank">Meng Lee</a> 2014-01-04 11:17 <a href="http://www.blogjava.net/menglee/archive/2014/01/04/408477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Leetcode] Subsets II</title><link>http://www.blogjava.net/menglee/archive/2014/01/03/408444.html</link><dc:creator>Meng Lee</dc:creator><author>Meng Lee</author><pubDate>Fri, 03 Jan 2014 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/menglee/archive/2014/01/03/408444.html</guid><wfw:comment>http://www.blogjava.net/menglee/comments/408444.html</wfw:comment><comments>http://www.blogjava.net/menglee/archive/2014/01/03/408444.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/menglee/comments/commentRss/408444.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/menglee/services/trackbacks/408444.html</trackback:ping><description><![CDATA[<div>Given a collection of integers that might contain duplicates, S, return all possible subsets.</div><div></div><div>Note:</div><div>Elements in a subset must be in non-descending order.</div><div>The solution set must not contain duplicate subsets.</div><div>For example,</div><div>If S = [1,2,2], a solution is:</div><div></div><div>[</div><div>&nbsp; [2],</div><div>&nbsp; [1],</div><div>&nbsp; [1,2,2],</div><div>&nbsp; [2,2],</div><div>&nbsp; [1,2],</div><div>&nbsp; []</div><div>]<br /><br />由于元素中可能存在重复，因此较之于Subset的实现，需要加一些判断。如果碰到了重复元素，只需要在上一次迭代新增的子集的基础上再进行迭代即可。实现代码如下：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;SubsetsII&nbsp;{<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;ArrayList&lt;ArrayList&lt;Integer&gt;&gt;&nbsp;subsetsWithDup(<span style="color: #0000FF; ">int</span>[]&nbsp;num)&nbsp;{<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;ArrayList&lt;Integer&gt;&gt;&nbsp;ret&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ArrayList&lt;ArrayList&lt;Integer&gt;&gt;();<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;ArrayList&lt;Integer&gt;&gt;&nbsp;lastLevel&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret.add(<span style="color: #0000FF; ">new</span>&nbsp;ArrayList&lt;Integer&gt;());<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arrays.sort(num);<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;num.length;&nbsp;i++)&nbsp;{<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;ArrayList&lt;Integer&gt;&gt;&nbsp;tmp&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ArrayList&lt;ArrayList&lt;Integer&gt;&gt;();<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;ArrayList&lt;Integer&gt;&gt;&nbsp;prev&nbsp;=&nbsp;i&nbsp;==&nbsp;0&nbsp;||&nbsp;num[i]&nbsp;!=&nbsp;num[i&nbsp;-&nbsp;1]&nbsp;?&nbsp;ret&nbsp;:&nbsp;lastLevel;<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(ArrayList&lt;Integer&gt;&nbsp;s&nbsp;:&nbsp;prev)&nbsp;{<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;Integer&gt;&nbsp;newSet&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ArrayList&lt;Integer&gt;(s);<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newSet.add(num[i]);<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp.add(newSet);<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret.addAll(tmp);<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastLevel&nbsp;=&nbsp;tmp;<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret;<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">20</span>&nbsp;}</div></div><img src ="http://www.blogjava.net/menglee/aggbug/408444.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/menglee/" target="_blank">Meng Lee</a> 2014-01-03 16:40 <a href="http://www.blogjava.net/menglee/archive/2014/01/03/408444.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Leetcode] Word Ladder II</title><link>http://www.blogjava.net/menglee/archive/2014/01/02/408381.html</link><dc:creator>Meng Lee</dc:creator><author>Meng Lee</author><pubDate>Thu, 02 Jan 2014 05:59:00 GMT</pubDate><guid>http://www.blogjava.net/menglee/archive/2014/01/02/408381.html</guid><wfw:comment>http://www.blogjava.net/menglee/comments/408381.html</wfw:comment><comments>http://www.blogjava.net/menglee/archive/2014/01/02/408381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/menglee/comments/commentRss/408381.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/menglee/services/trackbacks/408381.html</trackback:ping><description><![CDATA[<div>Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from start to end, such that:</div><div></div><div>Only one letter can be changed at a time</div><div>Each intermediate word must exist in the dictionary</div><div>For example,</div><div></div><div>Given:</div><div>start = "hit"</div><div>end = "cog"</div><div>dict = ["hot","dot","dog","lot","log"]</div><div>Return</div><div>&nbsp; [</div><div>&nbsp; &nbsp; ["hit","hot","dot","dog","cog"],</div><div>&nbsp; &nbsp; ["hit","hot","lot","log","cog"]</div><div>&nbsp; ]</div><div>Note:</div><div>All words have the same length.</div><div>All words contain only lowercase alphabetic characters.<br /><br />这个题目应该算是leetcode上比较难的题目了。刚开始我采用了和Word Ladder相似的做法，只是用ArrayList记录了当前变换路径，在小数据的情况下可以Accept，但是大数据超时。究其原因，是由于为每个当前节点记录变换路径的时候，需要复制之前的ArrayList，这个时间开销较大。<br />其实，我们可以采用一个Map&lt;String, HashSet&lt;String&gt;&gt;结构，记录字典单词的每一个前驱，这样我们可以从end反向遍历，构造出转换路径。<br />同时，我利用了两个ArrayList，交替记录上一层和下一层的节点，如果下一层节点为空，则不存在路径，立即返回。如果下一层中出现了end，证明找到了所有的最短路径，停止搜索开始构造路径。实现代码如下：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;WordLadderII&nbsp;{<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;GeneratePath(Map&lt;String,&nbsp;ArrayList&lt;String&gt;&gt;&nbsp;prevMap,<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;String&gt;&nbsp;path,&nbsp;String&nbsp;word,<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;ArrayList&lt;String&gt;&gt;&nbsp;ret)&nbsp;{<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(prevMap.get(word).size()&nbsp;==&nbsp;0)&nbsp;{<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path.add(0,&nbsp;word);<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;String&gt;&nbsp;curPath&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ArrayList&lt;String&gt;(path);<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret.add(curPath);<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path.remove(0);<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>;<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">12</span>&nbsp;<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path.add(0,&nbsp;word);<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(String&nbsp;pt&nbsp;:&nbsp;prevMap.get(word))&nbsp;{<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GeneratePath(prevMap,&nbsp;path,&nbsp;pt,&nbsp;ret);<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path.remove(0);<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">19</span>&nbsp;<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;ArrayList&lt;ArrayList&lt;String&gt;&gt;&nbsp;findLadders(String&nbsp;start,&nbsp;String&nbsp;end,<br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HashSet&lt;String&gt;&nbsp;dict)&nbsp;{<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;ArrayList&lt;String&gt;&gt;&nbsp;ret&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ArrayList&lt;ArrayList&lt;String&gt;&gt;();<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&lt;String,&nbsp;ArrayList&lt;String&gt;&gt;&nbsp;prevMap&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;HashMap&lt;String,&nbsp;ArrayList&lt;String&gt;&gt;();<br /><span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dict.add(start);<br /><span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dict.add(end);<br /><span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(String&nbsp;d&nbsp;:&nbsp;dict)&nbsp;{<br /><span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prevMap.put(d,&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ArrayList&lt;String&gt;());<br /><span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;HashSet&lt;String&gt;&gt;&nbsp;candidates&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ArrayList&lt;HashSet&lt;String&gt;&gt;();<br /><span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candidates.add(<span style="color: #0000FF; ">new</span>&nbsp;HashSet&lt;String&gt;());<br /><span style="color: #008080; ">31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candidates.add(<span style="color: #0000FF; ">new</span>&nbsp;HashSet&lt;String&gt;());<br /><span style="color: #008080; ">32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;current&nbsp;=&nbsp;0;<br /><span style="color: #008080; ">33</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;previous&nbsp;=&nbsp;1;<br /><span style="color: #008080; ">34</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candidates.get(current).add(start);<br /><span style="color: #008080; ">35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(<span style="color: #0000FF; ">true</span>)&nbsp;{<br /><span style="color: #008080; ">36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current&nbsp;=&nbsp;current&nbsp;==&nbsp;0&nbsp;?&nbsp;1&nbsp;:&nbsp;0;<br /><span style="color: #008080; ">37</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;previous&nbsp;=&nbsp;previous&nbsp;==&nbsp;0&nbsp;?&nbsp;1&nbsp;:&nbsp;0;<br /><span style="color: #008080; ">38</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(String&nbsp;d&nbsp;:&nbsp;candidates.get(previous))&nbsp;{<br /><span style="color: #008080; ">39</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dict.remove(d);<br /><span style="color: #008080; ">40</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">41</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candidates.get(current).clear();<br /><span style="color: #008080; ">42</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(String&nbsp;wd&nbsp;:&nbsp;candidates.get(previous))&nbsp;{<br /><span style="color: #008080; ">43</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;pos&nbsp;=&nbsp;0;&nbsp;pos&nbsp;&lt;&nbsp;wd.length();&nbsp;++pos)&nbsp;{<br /><span style="color: #008080; ">44</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;word&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;StringBuffer(wd);<br /><span style="color: #008080; ">45</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;'a';&nbsp;i&nbsp;&lt;=&nbsp;'z';&nbsp;++i)&nbsp;{<br /><span style="color: #008080; ">46</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(wd.charAt(pos)&nbsp;==&nbsp;i)&nbsp;{<br /><span style="color: #008080; ">47</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">continue</span>;<br /><span style="color: #008080; ">48</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">49</span>&nbsp;<br /><span style="color: #008080; ">50</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;word.setCharAt(pos,&nbsp;(<span style="color: #0000FF; ">char</span>)&nbsp;i);<br /><span style="color: #008080; ">51</span>&nbsp;<br /><span style="color: #008080; ">52</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(dict.contains(word.toString()))&nbsp;{<br /><span style="color: #008080; ">53</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prevMap.get(word.toString()).add(wd);<br /><span style="color: #008080; ">54</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candidates.get(current).add(word.toString());<br /><span style="color: #008080; ">55</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">56</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">57</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">58</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">59</span>&nbsp;<br /><span style="color: #008080; ">60</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(candidates.get(current).size()&nbsp;==&nbsp;0)&nbsp;{<br /><span style="color: #008080; ">61</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret;<br /><span style="color: #008080; ">62</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">63</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(candidates.get(current).contains(end))&nbsp;{<br /><span style="color: #008080; ">64</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br /><span style="color: #008080; ">65</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">66</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">67</span>&nbsp;<br /><span style="color: #008080; ">68</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;String&gt;&nbsp;path&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ArrayList&lt;String&gt;();<br /><span style="color: #008080; ">69</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GeneratePath(prevMap,&nbsp;path,&nbsp;end,&nbsp;ret);<br /><span style="color: #008080; ">70</span>&nbsp;<br /><span style="color: #008080; ">71</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret;<br /><span style="color: #008080; ">72</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">73</span>&nbsp;}</div></div><img src ="http://www.blogjava.net/menglee/aggbug/408381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/menglee/" target="_blank">Meng Lee</a> 2014-01-02 13:59 <a href="http://www.blogjava.net/menglee/archive/2014/01/02/408381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>