587.leetcode题目讲解(Python):安装栅栏(Erect the Fence)

1. 题目

题目

2. 解题思路

这道题还是比较难,需要一些背景知识(已整理到第3节中)。本题的解题思路其实是需要寻找一个点集的凸外壳,Jarvis’s 算法比较容易理解,我们从x轴最左边的点出发,寻找“最逆时针”的下一个点,直到回到最x轴左边的点,完成凸外壳的构建。

3. 背景知识

3.1 凸与非凸

回旋的阶梯 2019.4

  1. 现在居然还有打开页面会自动播放视频/音频 的网站存在,挺奇幻的,嗯,就是淘宝网。
  2. 在社交网络上,看到讨厌的内容总有取消关注冲动,一定得抑制住。很多“讨厌”其实都有保留的价值:提醒你这个世界上还其它的多样性,从而不至于生活在自己打造的“数字内容温室”。
  3. 《冰血暴》电视剧第一季中的这几句台词,总是读不腻:

Because maps used to say, “There

963.leetcode题目讲解(Python):最小面积矩形 II(Minimum Area Rectangle II)

题目

题目

解题思路

  1. 找出所有的矩形
  2. 逐一计算面积,找出面积最小的矩形
矩形判断

对于步骤1,判断是否为矩形的条件是:其对角线相交的中心点到四个角的距离相等。如下图所示:

这里有个小技巧,为了对 list 中的点进行向量计算,我们使用 complex() 函数将这些点变为复数形式。complex用法示例如下:…

710.leetcode题目讲解(Python):黑名单中的随机数(Random Pick with Blacklist)

题目

题目

解题思路

这道题的我的主要思路是,先通过累积概率选出各个白名单区间,然后再在白名单区间内生成随机数。网上也有一些其他更好的解法,比如对黑名单的成员进行映射等等,但思路不是特别直观,有些解法生成随机数的概率也并不均匀。

参考代码

回旋的阶梯 2019.02

1. 承认是自己不够好和证明自己足够好,都挺难的。关键难点在于“自己”模糊的边界和混淆的定义。

2. 我的Best Games,应该是塞尔达荒野之息和魂系列(黑暗之魂1&3,血源)。前者对于“游戏”的理解力令人叹服,就算大家已经把它吹上天,给予这个作品的赞美可能依然远远不足。而后者,通关后会让人觉得其他所有游戏都索然无味(包括塞尔达荒野之息),不断带来新的反思,甚至是改变人格。这让我怀疑魂系列是否真的超越了游戏的范围。

3. “一觉醒来,发现回到大学/高中/初中/小学课堂上”,很多人都有过这种愿望。“回到幼儿园”的版本我倒没见过,说明挫败大多从小学开始的。在《基督最后的诱惑》的电影中,耶稣被钉在十字架上后痛苦不堪,受到伪装成天使的撒旦欺骗,走下十字架过上了幸福的生活,多年后垂垂老矣,发现了真相,恳请上帝让他重新回到被钉在十字架的时刻。整部电影在耶稣回到十字架后癫狂的笑声中戛然而止,令人动容。你看,做到 do what’s right, …

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

题目如下:
题目

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

权重计算

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

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