LeetCode 笔记之——837. 新 21 点
爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下:
爱丽丝以 0 分开始,并在她的得分少于 K 分时抽取数字。 抽取时,她从 [1, W]
的范围中随机获得一个整数作为分数进行累计,其中 W 是整数。 每次抽取都是独立的,其结果具有相同的概率。
当爱丽丝获得不少于 K 分时,她就停止抽取数字。 爱丽丝的分数不超过 N 的概率是多少?
最近,公司产品中经常发现有用户报告各种列表突然不见的问题,后来发现是子线程报 IllegalStateException
,其中的 message
就是我们的标题。
这个问题还得从 JDK 1.7 开始说起。
在 Android 开发中,给网格状布局的元素之间添加空隙,并让他们居中对齐算是 UI 层面的一个常见需求;
很多时候我们都是通过在 itemView 中添加适当的 margin 来实现的,但是这个实现方式在遇到头尾部空隙和中间不一致时,就需要进行特殊处理,而且从权责上来看,实际上也不应该由 itemView 负责这个间隙的调整工作。
当然,Google 提供了一个 ItemDecoration 类专门来做这个事情,但是网上对于这个类的解析文章水平参差不齐,例如本文的参考文章,解析写的很好,但是提供出来的例子性能很糟糕,这里采用这篇文章进行参考,同时给出一个性能较好的例子供大家使用。
在这里也感谢此文的作者,他写的这篇文章很好的解释了 ItemDecoration 的原理,也使我增加了知识从而成文。
这是一篇翻译文章,目前可以作为迁移 Gradle 到 Kotlin DSL 的备忘录,译者在 Android Studio 3.5 RC-1 上也迁移成功。
之前看各大面经的时候搜索到了这个问题,切实感觉到如果刨根问底的问,自己还真不能抵挡住这种攻势,现在闲暇时间又心血来潮地想起来这个问题,就打算好好弄懂弄透,也希望能在将来面试的时候做好准备。
本文基于这个 StackOverflow 回答进一步推导,并给出详细解答步骤
折腾了好一段时间,也算是找到了工作了,做个面经总结来告慰一下我的学生生涯