20180625 周 ARTS

Algorithm

Two Sum - LeetCode

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Unresolved include directive in modules/ROOT/pages/20180625.adoc - include::https://raw.githubusercontent.com/diguage/leetcode/master/src/main/java/com/diguage/algorithm/leetcode/TwoSum.java[]

Reverse Integer - LeetCode

Given a 32-bit signed integer, reverse digits of an integer.

Unresolved include directive in modules/ROOT/pages/20180625.adoc - include::https://raw.githubusercontent.com/diguage/leetcode/master/src/main/java/com/diguage/algorithm/leetcode/ReverseInteger.java[]

这道题费了些周折。提交代码后,在1000多个测试用例处报错了,入参是: 1534236469。返回结果是一个很奇怪的数字。后来,终于意识到 1534236469 不越界,但是翻转过来,9646324351 是越界的。把中间技术结果用 long 表示后,就OK了。

Palindrome Number - LeetCode

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Unresolved include directive in modules/ROOT/pages/20180625.adoc - include::https://raw.githubusercontent.com/diguage/leetcode/master/src/main/java/com/diguage/algorithm/leetcode/PalindromeNumber.java[]

这道题一次通过,爽…

如果想省事,可以把数字当字符串处理,来一个 java.lang.StringBuilder#reverse() 就OK了。

Review

看了一些,重点介绍两篇文章:

回顾了互联网十多年的发展历程,并且从上网人数、网页设计、网速、浏览器、社交网络、移动时代、视频流等几个方面着重对比了前后十年的不同之处。并预言语音搜索、社会商业、移动网络、人工智能等方面将是接下来的发展重点。

作者先从背景入手,介绍了中国创业公司面临的几个机遇与问题:人工智能爆发、政府干预、法律缺失、技术的使用模式创新、人口众多等。然后简要分析了十家优质的创业公司,其中包括有:

不过,感觉作者对中国的了解有些偏差,个人感觉“途家网”已解决不能算是创业公司了。

Tip

这周闲暇时间都在看《重构》,分享几个重构技巧吧:

  1. Extract Method

  2. Introduce Explaining Variable

  3. Replace Method with Object

  4. Move Method

  5. Move Field

Share

读《重构》的感想

最近在看《重构》,说一下自己的感受。

在几年前看《大话设计模式》时,被设计模式的精巧之处及对面向对象特性恰到使用所深深折服,产生的直接影响就是加深了对面向对象的理解和使用。

现在看《重构》,起初代码不甚优雅,但是在通过反复使用作者介绍的简单朴实的重构技术,经过多次加工优化,代码逐渐清晰明了。尤其是,现在看的“Chapter 7 Moving Features Between Objects”,通过对代码重构,可以使代码越来越“面向对象化”。

如果说设计模式可以让我们在设计的时候,高屋建瓴地做出一个面向对象的设计;那么,个人认为,重构技术为已有代码修了一条慢慢通向面向对象的康庄大道,可以让我们一步一步把代码优化出面向对象的味道来。

参加团建的收获

周六(2018年06月30日),参加公司组织的团建。中间一个环节,分组比赛完成任务。说一下自己的收获吧。

  1. 任务分解 一共有16个任务,我们组五个人,分解到每个人,只需要关注自己负责的三个任务即可,这样降低了大家的记忆负担,任务明确,无形中提高了效率。

  2. 对手也许也是朋友 由于很多任务需要超过五个人才能完成,我们刚开始找游客协助。后来,开阔思路,对手也是游客,不能仅仅关注竞争,也许还可以合作,实现互利共生,尽可能多地完成任务。

  3. 方法总比困难多 其中一个任务需要口红。整个团队里,只有三个女生。外出团建,根本没有带口红。我们直接在途中,寻找了一些红色的小野果,捏碎当燃料了。

  4. 有压力,更有动力 总共有 2 个小时来完成任务。我们在剩下最后 40 分钟的时候,才刚刚走了去程的三分之二,最多四分之三。然后就加快进度,到底终点,完成任务时,只剩下半个小时多点时间,然后我们就一路狂奔向回赶,跑回到始发位置,我们还剩下10分钟,又紧锣密鼓地完成了最后两个任务。

  5. 要想走得远,大家一起走 非常感谢同一个队的小伙伴,尤其那个小女生,在一路狂奔向回跑的过程中,小女生一直坚持下来,没有掉队,非常难得。任务中,也需要各个小伙伴协作,大家集思广益,共同想办法,克服困难,完成了所有任务,拿到满分的成绩!为每个小伙伴鼓掌。

English

现在每天背诵五句“新概念英语2”的语句,复习大概 40 句。已经坚持 59 天。

接下来,准备每天对一篇文章,把生词也背一下。

支付宝

微信

感谢您的支持,😜