[Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复杂度上根本就不是最优解,有的写的太啰嗦,有的则用了一些过于 tricky 的方法。我没有为了这个再更新,就让它们去吧。
以下是 LeetCode 题目中 Medium 部分的上半部分,点击表格中的名称进入题目和解答。我计划把 LeetCode 我的解答分成四个部分发上来,这是第二部分。做这些题目收获还是挺大的。
Divide Two Integers
16.6%
Medium
一个纯正程序员的啰嗦
[Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复杂度上根本就不是最优解,有的写的太啰嗦,有的则用了一些过于 tricky 的方法。我没有为了这个再更新,就让它们去吧。
以下是 LeetCode 题目中 Medium 部分的上半部分,点击表格中的名称进入题目和解答。我计划把 LeetCode 我的解答分成四个部分发上来,这是第二部分。做这些题目收获还是挺大的。
Divide Two Integers
16.6%
Medium
前些天聊天聊起我的高中同学,现在大部分已经不再联系,但个别几个还常有通讯往来。不同的年龄阶段的回忆总是给我不同的印象,但是像高中时期这样每天忙于学业压力的时候也不多。我从刚接触物理和化学开始,我就对这两门课充满了兴趣。中学六年对于物理和化学的偏爱,应该说也是算同龄人中很少见的了。刷题、培训、搞竞赛…… 令我印象深刻的尤其是暑假,在大部分孩子都可以痛快地玩乐的时间,我还总是要参加物理或者化学的夏令营。现在如果翻出那个时候做题或者上课记录的笔记本,还是觉得遗憾,没有一直在这个爱好更加专注的道路上走得更远。而如今,我有好几个那时候的同学至少到现在,更接近我那个时候的理想
[……]阅读全文
[Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复杂度上根本就不是最优解,有的写的太啰嗦,有的则用了一些过于 tricky 的方法。我没有为了这个再更新,就让它们去吧。
LeetCode 最近很火,我以前不太知道有这么一个很方便练习算法的网站,直到大概数周前同事和我说起,正好我老婆要找工作,而根据同事的理论,LeetCode 的题目是必须攻破的第一道关卡。我虽说又不找工作,但是纯粹拿来练手和学习,觉得很多题目都挺有趣的。现在已经做了三分之一,我会把我的解答分几次放上来。这里是第一部分,难度为 easy 的题目。
我觉得做这样的题目很有帮助,但也要有 [……]阅读全文
最近参加了 Amazon Forecasting 的 Hackweek,大致就是给你一周的时间,你可以找一个感兴趣的项目,找几个人组个队,然后把想法实现出来。从整个项目来看,虽然时间只有一周,但是安排得满满当当,基本上把最初的想法实现出来了。趁着新鲜劲儿,我简单记录一些概况和感受:
[……]阅读全文
最近遇到这样一道算法题:
Given an array of integers, every element appears three times except for one. Find that single one.
一组整数,除了一个只出现一次以外,其他每个整数都恰好出现三次,要寻找那个特殊的整数。
似曾相识
首先,它让我想起了另外一道类似的题目,如果把上面的“ 恰好三次”,改成“ 恰好两次”,寻找那个特殊的整数,又该怎么解?
那样的话,我希望找到一个方法,让两个相同的数进行运算以后,能够泯灭掉,这样所有的数进行运算
[……]阅读全文
模板引擎是为了解耦而产生的,从编程范型的角度来说,写模板属于 “声明式(Imperative)编程”。JSP 大概是最早接触也是最基础的模板引擎,本来写 Servlet 嘛,一大堆一大堆的 print,实在是没有任何结构性可言,然后 JSP 出现,先被处理成实质为 Servlet 的 Java 文件,编译以后变成 class,接着一样执行。所以本质是编译型的模板引擎,当然模板引擎也有解释型或者二者混合的。通常说来编译型的执行效率要高得多。只要是和显示相关的编程语言,都会发展出一套或者 N 套模板引擎,用得多了觉得很多情况下都大同小异。
在去年 《行动、眼界和体验》这篇文章里面,我说出了一些感触,我还说,南京是个小盒子,北京是个大盒子,我肯定还会寻找更多颜色和其他风格的盒子。接着就在不到一年的时间里面,我的生活发生了巨大的变化。马云说过差不多这样一句话,年轻人总是喜欢变化的,要不然什么事情都论资排辈了,自然轮不到年轻人。毕业以后,南京的生活最安定和规律,北京给我带来足够的大都市气息,我工作、娱乐,并且享受大城市的便捷,却离家越来越远了。亲戚看起来我颠沛流离,难得回家,但是其实我还是过得踏实。但是今天掰指头算算,离开北京四个月时间,从工作到生活都趋于平静,我已经在异国他乡安顿定居下来了,人生的经历和体验,可谓有深浅、有浓淡,无疑
[……]阅读全文
以下内容来自于在 StackOverflow 上的有一个有趣的讨论,说的话题很小,就是对于这样的对象为空的检查:
if (someobject != null) { someobject.doCalc(); }
为了避免空指针异常,看起来也没什么不妥。不过代码里面一片一片的对象是否为空的判断,实在难看。
对象是否为空的契约
通常我们在定义 API 的时候,是遵循一些规矩的,这些规矩可以叫做规约,比如这样的接口:
public Set<String> getCollections();
通常情况下,或者说没有特殊说明的情况下,返回的 set 是不能为 null 的,如果没有元素,应当是一个
[……]阅读全文
There is an article “Why Singletons are Evil” written by Scott Densmore in 2004 aroused controversy. Suggest you to click the link to see what he said before reading this. Recently I found some points in this article has been quoted and recorded in the development guide in our team, which is comple
[……]阅读全文
我经历过两种公司的风格,一种开发测试界限明显,多数时候测试给开发打下手,转测试之前开发围着测试转;第二种没有什么开发测试的分工,程序员从头干到尾,从需求分析干到处理线上问题。我不想在这里分析优劣,我想说的是,不论什么样的形式,项目阶段中测试的环节是很实际、很重要的。这也是被许多程序员低估的步骤。都在说设计,都在谈用户体验,但是测试呢?设计再精良的东西,如果满是 bug,还是白搭。很多人都愿意写程序,不愿意做测试,多数人觉得单纯的测试比单纯的开发发展空间小多了。但是不可否认的是,测试这一项活动,从来都有着举足轻重的作用,不论是什么样的角色去完成。抛开那些冠冕堂皇的话,我总结了几个实际、好用,或者说
[……]阅读全文
正好赶在英超新赛季开始前,作为英超和曼联球迷,我去知乎上面回答了几个关于曼联的问题,一个赛季以后更可以看我的理论准不准确。轻拍。
看到这个问题,我的第一反应是 10 年欧冠的那张红牌。楼上恰恰也提到了,看来这绝非偶然。其实就那件事情来说,拉斐尔的这张红牌,或者说不冷静和缺乏经验的红牌,一定程度上让曼联输给了拜仁,损失惨重,但是,事后弗格森没有在公众场合斥责拉斐尔的无脑举动,而是在新的赛季继续使用它,这本该对球员是莫大的支持和鼓励,经历过这些重大的挫折才会有额外的进步。但是事实上球员的发展并不如期望。总的来说,在 08 年之后曼联对于青训球员的评估,总是有 “拼劲有余,技术不足”
[……]阅读全文
先说明,这是没有什么营养,但是废话也很少的看图说话。如果你和我一辈人,也许非常清楚我说的这些事,贴的这些图。
陈奕迅的《十年》
十年之前
我不认识你 你不属于我
我们还是一样 陪在一个陌生人左右
走过渐渐熟悉的街头
十年之后
我们是朋友 还可以问候
只是那种温柔
再也找不到拥抱的理由
《老友记》的十年
从青涩的脸庞:
到成熟的面孔:
后来也看了不少情景喜剧。但是老友记的地位,如同经典,无法超越。不久前看到 Joey 和 Chandler 的重聚,唏嘘不已。
《暗黑破坏神》的十年
从无法超越的
[……]阅读全文
以下文字,看看就好,笑笑就好。
最近在被一个问题折磨,大致上是,公司内部某些技术更替的关系,要把原有的一个鉴权的组件 A 淘汰掉,迁移到一个新的替代品 B 上,我估摸着也就一天时间搞定它绰绰有余了。没料想一猛子扎进去就没那么容易出来了,替换完成以后的测试傻了眼,发现了一个诡异的问题,于是追根溯源,把牵涉进来的林林总总一一拖出来检查排除枪毙,环境比较复杂,debug 起来又比较头疼,折磨了三天半的时间;最后还靠这个替代品 B 的问题列表里面,有某下游产品的工程师跳出来说是这个替代品自身有问题,分析代码怀疑是如何如何的一个 bug,于是我也按照这个思路修改它的代码,编译并且打上补丁以后,才发现确实修复了我遇
[……]阅读全文
Hadoop 中连接(join)操作很常见,Hadoop“连接” 的概念本身,和 SQL 的 “连接” 是一致的。SQL 的连接,在维基百科中已经说得非常清楚。比如 dataset A 是关于用户个人信息的,key 是用户 id,value 是用户姓名等等个人信息;dataset B 是关于用户交易记录的,key 是用户 id,value 是用户的交易历史等信息。我们当然可以对这两者以共同键用户 id 为基准来连接两边的数据。
首先,在一切开始之前,先确定真的需要使用 Hadoop 的连接操作吗?
如果要把两个数据集合放到一起操作,Hadoop 还提供了 Side Data Distribution(data sharing)的方式,
[……]阅读全文
每届世界杯都挺想发发牢骚的,但是说着说着就偏离主题了。在 06 年世界杯的时候写过这篇文章,而到了 10 年世界杯,则是这篇。无论如何,这个传统要发扬下去。
1998 年世界杯是我看的第一届世界杯,98 年以前我看足球的回忆似乎很淡薄,只有甲 A 尤其是上海申花的些许回忆。当时我大概对是上海申花和球员申思的脑残粉,每周买申江导报(买这份报纸有一个重大原因是一块两毛钱但是却厚厚一叠)首先就要翻到足球的版面,喜欢这支球队是因为离家近,也能和大连万达、北京国安统领中国足坛。申思的任意球脚法我后来认为即便拿到世界上也算是非常出众的,很多人会笑话这样的看法,不过他退役前后一共参加了两届世界任意球大师赛,一次第二,一次
[……]阅读全文
最近在使用一个内部框架的时候,希望能够在运行时指定枚举类型,却发现这是一件挺麻烦的事情(不找别的替代方式,就是要动态增加 enum 的类型),方法也不正统,不过作为有趣的尝试,研究研究也无妨,下面的内容主要来自于 《Java – create enum instances dynamically》这样一篇文章。在一切开始前,如果你想问,为什么非要增加/改变 enum 类型?其实这是一个非常好的问题,多数情况下这是应对被避免的,但是这不在今天我的讨论范围内。
一、方法 void addEnum(Class<T> enumType, String enumName),用于增加一个枚举类型:
&n
[……]阅读全文
最近在读代码的过程中,经常遇到一些利用泛型来对调用链中的参数进行类型约束的情形,特指对于调用链中后面环节的参数类型和返回值,由前面环节的参数类型来确定,我草率地把它称作泛型传递(技巧很简单,但是用得好会很有趣;我不知道这个东西正儿八经的名字叫做什么)。
在说这个事情以前,对于 Java 的泛型,还是和其它语言中有些许的不同,这里需要结合使用方法泛型和类泛型,如有不明,对于其中的使用可以参考这篇 《泛型趣谈》,而其实下面要说的内容,其实也就是这篇文章中提到的 “链式调用”。另外,也顺便提一句,“泛型” 和 “范型” 可是完全不相干的东西,相差十万八千里(若有混淆,关于 “范型”,可以移步阅读这篇文章)。
很多
[……]阅读全文