Skip to content

四火的唠叨

一个纯正程序员的啰嗦

Menu
  • 所有文章
  • About Me
  • 关于四火
  • 旅行映像
  • 独立游戏
  • 资源链接
Menu

LeetCode 题目解答——155~226 题

Posted on 06/18/201506/23/2019 by 四火

[Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复杂度上根本就不是最优解,有的写的太啰嗦,有的则用了一些过于 tricky 的方法。我没有为了这个再更新,就让它们去吧。

LeetCode 上面的题目更新很快,而且题目是越来越不好做了。我把最新的 155 到 226 题目的思考和解答过程放在下面,解法有好有坏,有问题我们可以讨论。老规矩,有一些题目是要买一个特定的电子书才可以在线做题的,我就跳过去了。

#
Title
Acceptance
Difficulty

226
Invert Binary Tree[……]阅读全文

Continue reading

换组

Posted on 06/17/201506/23/2019 by 四火

group

最近在忙于公司内部换组的事情,在亚马逊等等很多公司都有这样的政策文化,就是,如果你在这一个组工作一年以后,并且绩效不太差的话,都可以自己去寻找觉得喜欢的团队加入。我在当前的这个大组干了两年多了,经历了一些成败和风波,我觉得是时候离开去寻找一个更合我胃口的团队了,增加阅历和体验,当然,也肯定是新的挑战。在思考自己的职业未来的时候,其实是有不少选项的。大约是最近这一年,我越来越感觉到,在 Amazon 工作,那么多内容里面,最有价值的大概是数据,我寻找的下一站,也是想多参与和大数据更紧密的工作。如果说以前我的工作更像是一个 full stack engineer 的话,接下去一段时间,我要更多地和数据、

[……]阅读全文

Continue reading

手滑的故事

Posted on 06/10/201506/23/2019 by 四火

slippery

最近看到这篇文章 《小伙伴们手滑集》,觉得感慨很多,强烈推荐大家阅读。比如这样的例子:

UPDATE 没有 WHERE 条件

而我则经历过 delete 没有写 where 条件的惨剧,这个惨剧是某些 case 下面代码调用触发的,不是手动执行 SQL 发生的。

还有臭名昭著的,我没有经历过,但是我有不止一个同事干过这样的事情:

rm -rf

都只是手稍稍地温柔地 “滑了一下” 而已嘛……

这些事情我觉得一下子很亲切,似乎全世界的软件工程师都是如此得同一。

出的事故多了以后,变得战战兢兢,如履薄冰,尤其是回车键这样的敲击,似乎总是带着颤抖落指。

还有这篇文章 《让自家系统瘫痪,这事我也干过》,讲了一个关于使用 tr

[……]阅读全文

Continue reading

建立动态规划状态转移方程的练习

Posted on 06/01/201506/23/2019 by 四火

algorithm

大学里面算法课老师教导过动态规划,但是就像看书要把书看厚再看薄一样,要把动态规划彻底理解,还是需要一些时间的锻炼。解动态规划问题,每个人都有自己的习惯的套路,我的理解是最核心的过程有两部,一个是找出问题的一个一个子“ 状态”,再一个就是建立“ 状态转移方程”(就是所谓的“ 递推关系式”)。把这个过程搞定,基本上动态规划的题目就解了一半了,剩下那些代码层面的事情,是把思路和数学方程实现而已了。

在实现的过程中,可能会用到一些技巧,比如“ 循环还是递归”,这只是实现的办法而已,不是动态规划的本质;再比如空

[……]阅读全文

Continue reading

一点美中医疗的对比

Posted on 05/24/201506/23/2019 by 四火

med 最近耳道感染,左耳朵又堵又疼,在美国几次就医,本人虽非医学专业出身,但从局外人的角度,想到和国内那些求医的历史,还是有一些比较可言。

首先对于医生的划分,国内基本上就是根据科室来完成,一个医生在一个科室,时间久了,经验丰富,遂成为出名的医生。好处在于医生更能够专精于自己的一亩三分地,专科阅历容易积累。而看看许多国内的专家,有大量的机会见各种各样奇怪的病人,并且手术的机会也会非常多,因此我猜测经验会更加丰富。但不足之处在于,对于病人来说,疾病往往是复杂性全身性的,可能对要挂哪个科室并不清楚,即便到求医中后期,都有可能面临多科室一同合作的情况,这些情形都容易导致耽搁病情。

而美国的医疗体系,

[……]阅读全文

Continue reading

夏威夷游记

Posted on 05/14/201506/23/2019 by 四火

6 天 7 夜,仅游玩了 O'ahu 一个岛,后来总结如果高效率地行进,可能这个岛屿 4 天就可以玩的差不多了。我很喜欢旅行,但是在旅行计划方面不太在行。夏威夷和我以前去过的菲律宾长滩岛比起来,更加现代一点,价格也贵了接近一倍。期间我们没有坐公交车,全程都租了车行进,并且我觉得花掉的钱里面,租车是最值得的。我把这篇文字记录下来,如果你也有夏威夷的出行计划,那么可以参考参考。

家人和我一起来,都说三个女人一台戏,至于四个女人嘛…… 反正一路上叽叽喳喳的。

IMG_2793

 

第一天:东线

海滩是夏威夷的重头戏,如果说论美丽的海滩数量,夏威夷可真是不少。当然,去多了可能觉

[……]阅读全文

Continue reading

读写模型整理笔记

Posted on 04/27/201510/07/2024 by 四火

读模型

1、主键读

最常见的读模型,说是主键,其实也包括其它索引键,或者联合主键。

常见实现:hash,时间复杂度可以接近 O(1);B 树或变种:时间复杂度接近 O(log(n))。

关于 B 树和变种:

B 树(B-树):本质上是二叉查找树的升级版,变成了平衡的 N 叉查找树,这个 N 的范围根据磁盘一次读取的块大小来调整,这样复杂度 log n 的底数就从 2 变成一个更大的数,减少了树的高度。除此以外,还有一些额外的优化,比如为了插入和删除的性能考虑,通常准备一些预留的空间,只要在当前块或者邻近块中找到空间写入,就避免了开销巨大的所有记录向后偏移的操作。

B 树的阶:

  1. 一棵 m 阶的 B 树最多有 m 棵子树;
  2. 根节点至少有

[……]阅读全文

Continue reading

从 Java 和 JavaScript 来学习 Haskell 和 Groovy(类型系统)

Posted on 04/19/201510/08/2024 by 四火

Haskell 接上文 《从 Java 和 JavaScript 来学习 Haskell 和 Groovy(引子)》。

首先搞清几个概念:

  • 动态类型(Dynamic Typing)和静态类型:区别的核心在编译期还是运行时。静态类型的语言系统在编译期就明确知道每一个变量的类型,如果发现不合法的类型赋值就在编译期报错;动态类型则直到运行时才会报错。
  • 类型推导(Type Inference),类型推断是指可以在上下文中,编译器来推导实际的类型,也就是代码使用隐式类型指定。比如一个简简单单的 “var a=1”,a 就被推断成整型。
  • 弱类型(Weakly Typed)和强类型:指的是语言系统对类型检查,或者是类型之间互相转换

[……]阅读全文

Continue reading

从 Java 和 JavaScript 来学习 Haskell 和 Groovy(引子)

Posted on 04/12/201510/08/2024 by 四火

compare 我记得刚接触计算机的时候,我就受到了两个非常巨大的错误观念的影响,这个观念最初是来自于老师的传授还是学长的教诲已经记不清了,但是直到我工作几年以后,才慢慢有了实际的体会:

  1. 学习和使用什么编程语言不重要,重要的是算法和设计;
  2. 程序员学习的精髓是面向对象的设计模式,掌握以后,一通百通。

简直就是是胡扯啊。也许在某个极其狭隘的上下文中还能这样说,但是泛泛而谈,这样的态度无疑是误人子弟的。

就说第一条,编程语言不但重要,而且太重要了。换句话说,学习一门新的编程语言,可能学习的是背后的范型和思考问题的方式。如果这个部分能带来新的东西,那就是值得花时间投入的。

可能很多人和我的背景一样,熟悉 Java 和

[……]阅读全文

Continue reading

生活的鱼和熊掌

Posted on 03/28/201506/23/2019 by 四火

f-b 前方鸡汤高能预警。

读书的时候,曾经听到这样的说法,最近几个月,则又听到了两三次,人生选择论,鱼和熊掌说,或者生活跷跷板理论。跷跷板的特点就是,一头摁下去,另一头就起来。本人向来鄙视鸡汤,不过这个理论还是比较赞同的,看来今天破一次例。选择了 A,就失去了 B;选择了 B,就无法得到 A。所谓鱼和熊掌无法兼得便是如此。

生活总会值得吐槽

毕业后在南京工作的时候,觉得气候还算过得去,吴侬软语听起来也顺耳,但是地方实在是太小了,很不甘心在这个小地方一直耗下去;到了北京,确实见了世面,确实是我所说的“ 更大的盒子”,但是又觉得环境太过糟糕,交通无法忍受;现在来到西雅图,平日里吐槽

[……]阅读全文

Continue reading

系统设计典型问题的思考

Posted on 03/15/201509/02/2022 by 四火

CAP系统设计方面的问题问题是非常考验经验和思维过程的,而且和常见的算法问题、语言基础问题不同,涉及的面很广,还没有比较一致的判别标准。但无论如何,还是可以归纳一些常见的思路和典型问题的线索。

首先,反复沟通和澄清系统需求。只有把需求澄清清楚了,才可以开始思考并落到纸面上。但是需求的沟通应该是持续和循序渐进的,问题很难从一开始就思考全面。最重要的条目包括:

  • use cases,通常问题只需要 2~3 个 use cases 需要考虑,其他的部分会晚些考虑,或者不考虑。这样就可以简化问题。
  • 用户数量(用户可以是下游系统或者人)、数据数量,澄清这个事实无疑非常重要,对系统设计的决策有重大意义。
  • 请求模型,

[……]阅读全文

Continue reading

一道随机数题目的求解

Posted on 03/13/201506/23/2019 by 四火

random 有这样一道算法题:

给定一个能够生成均匀 1~5 随机枚举数的函数,请设计一个能够生成均匀 1~7 随机枚举数的函数。

就是说,有一个生成随机数的函数 rand5,可能返回 1、2、3、4、5 这 5 个枚举值,其中每个值被返回的概率都是严格的 1/5,现在需要设计一个类似的随机数函数 rand7,可能返回 1、2、3、4、5、6、7 这几个枚举值,每个值被返回的概率都是严格的 1/7。

先掩卷思考,脑海中浮现的思路包括:

  • 调用 rand5 的结果除以 5,再乘以 7,这样的结果范围为 7/5~7,并非所希望的结果;
  • 反复调用 rand5 函数 7 次,结果再除以 5,这样的结果范围为也为 7/5 ~ 7,并非所希

[……]阅读全文

Continue reading

再谈程序员学英语

Posted on 03/07/201510/01/2024 by 四火

english

2012 年的时候,我曾经写了一篇 《程序员学英语》,总结了一些我对于英语学习的看法,包括为什么英语对于程序员来说如此重要,还有一些自己总结的英语学习的方法。时过境迁,在西雅图待了半年多了,于是在这些内容基础上,我现在有了一些新感触,以 tips 的记录在这里,希望对于像我这样对于英语学习天赋平平的程序员来说有所帮助。

先说明一点,通常情况下我不太赞同高强度的语言训练,譬如连续地花时间背诵红宝书,我没有 GRE 的迫切压力,自然也不会像那些莘莘学子一样花数周的时间反复强力地背诵和巩固红宝书词汇。当然,话说回来,这可能还是最佳的单词记忆方式,因为可以做到高密度的反复。在一周内记诵的词汇得到反复,比每天零零

[……]阅读全文

Continue reading

A page widgetization practice

Posted on 02/16/201506/23/2019 by 四火

widget

I was working on the page reconstruction recently, and here is how I divide a page into widgets and how do they interacts in this new attempt.

Core Concepts

Page and widget: A page is composed by several widgets, and a widget is the minimum unit for reuse.

Widget controller: Accepts multiple widget

[……]阅读全文

Continue reading

Java 容器类型复习笔记

Posted on 02/14/201510/03/2024 by 四火

data_structures 最近抽空把 java.lang 下面常用的那些容器类型(数据结构)复习了一下,这些东西是基础,平时使用的时候也可以很容易查得到,有些方法大概知道,但是总是弄混,如果可以记住那些重要方法,并且能够熟练使用的话,还是可以让编码过程变得容易很多。另外一个是实现机制,对于常用数据结构的实现机制,应该说是必须要熟知的。

另外,并发容器我之前整理过,放在这篇文章里。

Queue

  1. add 和 offer 的区别在于达到上限时 add 抛出异常,offer 返回 false;
  2. remove 和 poll 的区别在于,队列为空时前者抛出异常,后者返回空;
  3. element 和 peek 都返回队列头部元素,

[……]阅读全文

Continue reading

直面歧视

Posted on 02/08/201506/23/2019 by 四火

discriminate

最近在知乎上面看到不少关于歧视讨论的帖子,大部分人的观点都是,歧视是负面的,要避免歧视,尤其是在公众场合歧视的人,要惩戒。这条观点展开来的话题,大部分我都认同,只是我想补充的是,其实歧视没有那么遥远,不要把歧视的事情全部看做多么罪恶深重的事情,事情要一码一码分开来看,有轻有重,我向来厌恶鸡汤,统一的道德帝是可恶的。

首先,来澄清 “歧视” 的概念:歧视,是针对特定族群的成员,仅仅由于其身份或归类,而非个人品质,给予不同的对待。好,就针对这样的定义,有那么多人跳出来说,“我不歧视任何人”,“我不歧视任何事”,说说如此容易,可这样的话经得起考验么?从最简单的分类例子看起,知乎 “歧视” 话题 [……]阅读全文

Continue reading

LeetCode 数据库十道题解答

Posted on 01/30/201506/23/2019 by 四火

在之前做算法题的途中发现,LeetCode 上面推出了数据库解答,有十道题,于是这两天晚上时间就给做了。解答是次要主要的好处是,正好复习复习 SQL 一些查询语句的写法,比如自定义变量和常用函数。题目都比较简单,少做解释,以贴题目和答案为主。

 

#
Title
Acceptance
Difficulty

175 Combine Two Tables 32.5% Easy 176 Second Highest Salary 23.8% Easy 177 Nth Highest Salary 14.1% Medium 178 Rank Scores 20.7%[……]阅读全文

Continue reading

XML 和 JSON

Posted on 01/25/201510/08/2024 by 四火

json 不久前看到一个讨论帖,说的是 XML 和 JSON 的比较,说着说着后来就变成了 JSON 到底比 XML 牛逼在哪里。不吹不黑,客观地来比较一下二者的异同。

XML 比 JSON 更胖吗?

有的情况下是的,但也不一定,比较这样的片段:

<user age="18">
    <address>
        <city name="Seattle" />
    </address>
</user>

和

{"user" : {
    "age" : 18,
    "address" : {
        city

[……]阅读全文

Continue reading

LeetCode 算法题目解答汇总

Posted on 01/19/201509/02/2022 by 四火

LeetCode

  • LeetCode 题目解答——Easy 部分
  • LeetCode 题目解答——Medium 部分(上)
  • LeetCode 题目解答——Medium 部分(下)
  • LeetCode 题目解答——Hard 部分
  • LeetCode 题目解答——155~226 题
  • LeetCode 题目解答——第 227 到 310 题
  • LeetCode 付费题目(一)
  • LeetCode 题目解答—— 第 311 到 371 题
  • LeetCode 题目解答—— 第 372 到 415 题

[Updated on 9/22/2017] 如今回头看来,里面很多 [……]阅读全文

Continue reading

LeetCode 题目解答——Hard 部分

Posted on 01/18/201506/23/2019 by 四火

[Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复杂度上根本就不是最优解,有的写的太啰嗦,有的则用了一些过于 tricky 的方法。我没有为了这个再更新,就让它们去吧。

以下是 LeetCode 题目解答的最后一部分:Hard 部分。

Text Justification
14.0%
Hard

Search in Rotated Sorted Array
28.6%
Hard

Binary Tree Maximum Path Sum
20.2%
Hard

Reverse Nodes in k-Gro[……]阅读全文

Continue reading
  • Previous
  • 1
  • …
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • …
  • 23
  • Next

订阅·联系

四火,啰嗦的程序员一枚,现居西雅图

Amazon Google Groovy Hadoop Haskell Java JavaScript LeetCode Oracle Python Spark 互联网 前端 华为 历史 同步 团队 图解笔记 基础设施 工作 工作流 工具 工程师 应用系统 异步 微博 思考 技术 数据库 曼联 测试 生活 程序员 管理 系统设计 缓存 编码 编程范型 英语 西雅图 设计 评审 问题 面试 项目

分类

  • Algorithm and Data Structure (30)
  • Concurrency and Asynchronization (6)
  • System Architecture and Design (43)
  • Distributed System (18)
  • Tools Frameworks and Libs (13)
  • Storage and Data Access (8)
  • Front-end Development (33)
  • Programming Languages and Paradigms (55)
  • Testing and Quality Assurance (4)
  • Network and Communication (6)
  • Authentication and Authorization (6)
  • Automation and Operation Excellence (13)
  • Big Data and Machine Learning (5)
  • Product Design (7)
  • Hiring and Interviews (14)
  • Project and Team Management (14)
  • Engineering Culture (17)
  • Critical Thinking (25)
  • Career Growth (57)
  • Life Experience and Thoughts (45)

推荐文章

  • 谈谈分布式锁
  • 常见分布式系统设计图解(汇总)
  • 系统设计中的快速估算技巧
  • 从链表存在环的问题说起
  • 技术面试中,什么样的问题才是好问题?
  • 从物理时钟到逻辑时钟
  • 近期面试观摩的一些思考
  • RSA 背后的算法
  • 谈谈 Ops(汇总 + 最终篇):工具和实践
  • 不要让业务牵着鼻子走
  • 倔强的程序员
  • 谈谈微信的信息流
  • 评审的艺术——谈谈现实中的代码评审
  • Blog 安全问题小记
  • 求第 K 个数的问题
  • 一些前端框架的比较(下)——Ember.js 和 React
  • 一些前端框架的比较(上)——GWT、AngularJS 和 Backbone.js
  • 工作流系统的设计
  • Spark 的性能调优
  • “残酷” 的事实
  • 七年工作,几个故事
  • 从 Java 和 JavaScript 来学习 Haskell 和 Groovy(汇总)
  • 一道随机数题目的求解
  • 层次
  • Dynamo 的实现技术和去中心化
  • 也谈谈全栈工程师
  • 多重继承的演变
  • 编程范型:工具的选择
  • GWT 初体验
  • java.util.concurrent 并发包诸类概览
  • 从 DCL 的对象安全发布谈起
  • 不同团队的困惑
  • 不适合 Hadoop 解决的问题
  • 留心那些潜在的系统设计问题
  • 再谈大楼扔鸡蛋的问题
  • 几种华丽无比的开发方式
  • 我眼中的工程师文化
  • 观点的碰撞
  • 谈谈盗版软件问题
  • 对几个软件开发传统观点的质疑和反驳
  • MVC 框架的映射和解耦
  • 编程的未来
  • DAO 的演进
  • 致那些自嘲码农的苦逼程序员
  • Java 多线程发展简史
  • 珍爱生命,远离微博
  • 网站性能优化的三重境界
  • OSCache 框架源码解析
  • “ 你不适合做程序员”
  • 画圆画方的故事

近期评论

  • + 1.943624 BTC.NEXT - https://graph.org/Ticket--58146-05-02?hs=9a9c6f8dfe3cdbe0074006e3e640b19b& on 所有文章
  • Anonymous on 闲聊投资:亲自体验和护城河
  • 四火 on 关于近期求职的近况和思考
  • YC on 关于近期求职的近况和思考
  • mafulong on 常见分布式基础设施系统设计图解(四):分布式工作流系统
  • 四火 on 常见分布式基础设施系统设计图解(八):分布式键值存储系统
  • Anonymous on 我裸辞了
  • https://umlcn.com on 资源链接
  • Anonymous on 我裸辞了
  • Dylan on 我裸辞了
© 2025 四火的唠叨 | Powered by Minimalist Blog WordPress Theme