Month: February 2019

497. leetcode题目讲解(Python):非重叠矩形中的随机点(Random Point in Non-overlapping Rectangles)

题目如下:
题目

这道题的主要解题思路是利用矩形所包含的整数坐标点来生成对于的权重,如下图所示:

权重计算

对于一个长宽为a,b的矩形,我们可以通过: (a+1)*(b+1)来获取其包含整数点的数量从而生成对应的权重信息。根据权重信息,有两种解法:

解法①:使用random.choices() 根据权重选择矩形,然后生成随机点。 参考代码如下:

519. leetcode题目讲解(Python):随机翻转矩阵(Random Flip Matrix )

题目如下:
题目

这道题的思路为将2维矩阵降为一维,从而方便使用random函数获取位置。由于我们只对值为0的元素进行翻转,所以需要避免已经被翻转过的元素。在代码中我们使用了一个set(因为我们只关心存在与否)来对翻转过的位置进行存储。

参考代码如下:

回旋的阶梯 2019.01

  1. 演奏乐器和点击流媒体应用播放键的区别在于:乐器的演奏过程可以融入对音乐的私人理解,相比播放软件的刻板重现,乐器演奏的缺陷或者魅力在于每次输出的差异性。其实这么说不严谨,本质上来看,数字播放器本身也是一种乐器。
  2. 家长为小孩挑选学习乐器时,除了经济方面的考量,更多家长是从“学什么乐器最有用”的角度出发。但就算只谈功利心,会某种乐器最大的好处也就是在公司/学校聚会耍帅,毕竟大多数人努力一辈子也成不了十分之一个Glen Gould。另外通过这个乐器演奏这个技能追求异性也不靠谱,不信你看看社交网络上有多少人把郎朗喊作“老公”?真为这个还不如老老实实去赚钱。不多废话,我想说的是:“有用”是艺术最无用的打开方式。
  3. 用来 听 音乐的APP一定要是不带登录功能的。
  4. 我不相信知识付费,但我相信信息付费。原因是通过付费当然可以知道,但通过商品交易是无法学到的。
  5. 非常厌恶产品经理说我以前是程序员。
  6. 看完《黑镜 潘达斯奈基》,还是觉得一旦提供了交互,这类作品本身缺乏足够的封闭性,因此只能作为某种工具般的存在。

Leetcode 题目的正确打开方式

从2018年进行Leetcode的题目讲解以来,发现大家反馈的主要问题有以下几种:

  1. 被题目数量吓到:目前题库中的题目数量快1000了,每天做5个题目也得200天才能做完。
  2. 做了白做: 花了很大功夫做完的题目,没几天就忘光了
  3. 最优解不好理解:提交的算法都是垫底的,看了别人的算法又理解不深刻

针对这些问题,我也进行了反思,最后发现是我去,恐怕是题目的打开方式错了。大多数朋友在进行算法练习的时候都是这样做题的:

顺序做题

这种做题方式很大程度上造成了“记不住”和“做了白做”的问题,原因是没有形成某一类问题思维体系,下次遇到同类问题,又重头来过。

那根据类别做题看起来是个好选择,一些朋友是以这个顺序做的:

类别顺序

问题是这种模式下你会发现前几个类别的题目数量非常多,做到后面几乎是有种想吐的感觉,没有新鲜感,很多朋友甚至没法坚持做完一个类别。

前几个类别题目数量暴多

所以,我觉得,正确的做题顺序应该是由类别顺序的从下到上,也就是逆类别做题:…