楼主: Myron2017
跳转到指定楼层
上一主题 下一主题
收起左侧

刷题记录帖子

🔗
 楼主| Myron2017 2020-6-20 12:14:49 | 只看该作者
全局:
929. Unique Email Addresses
用的是比较笨的写法,但是看讨论看到一个非常风骚的写法,还是这个写法有意思,对比如何熟练的使用 Python 的惯用法。



我的解法,太麻烦了

回复

使用道具 举报

🔗
 楼主| Myron2017 2020-6-20 12:30:19 | 只看该作者
全局:
883. Projection Area of 3D Shapes

又到了学习 Python 惯用法的时候,比如 如何得到 row 的 max 还是简单的,得到 col 的 max 需要用到 zip 的 *, 得到每个 cell 都大于 0 可能只能每个都看一遍了。

回复

使用道具 举报

🔗
 楼主| Myron2017 2020-6-23 21:12:23 | 只看该作者
全局:
222. Count Complete Tree Nodes 这是基本的 二叉树遍历操作,遍历二叉树,出现 root 加 1再遍历left,right.
回复

使用道具 举报

🔗
 楼主| Myron2017 2020-6-23 21:31:11 | 只看该作者
全局:
1002. Find Common Characters 解决题目很简单,但是想清楚还是需要点时间。

其实还是基于 HashMap 做,每个 word 可以得到 ch 的 Frequence HashMap,然后其实就是找出共同的元素,但是这个不是简单求并集,而是要找出 Frequency 中小的那个数字,因为这个才是限制元素,然后再返回去。

https://leetcode.com/problems/fi ... d-look-for-minimum.

这个答案写的很好。
回复

使用道具 举报

🔗
 楼主| Myron2017 2020-6-23 21:49:43 | 只看该作者
全局:
350. Intersection of Two Arrays II, 349. Intersection of Two Arrays

其实还是比较简单的,还是老思路,建立 Map 然后统计,只不过一个是统计是不是出现,一个是统计两者之间最小的那个。
回复

使用道具 举报

🔗
 楼主| Myron2017 2020-6-23 23:09:48 | 只看该作者
全局:
509. Fibonacci Number

老题目的基操啦,但是还是需要全面掌握如何写出答案。官方解答总结的很好。特别是怎么正确使用黄金比例解题,其实可以直接上通项公式。

https://demonstrations.wolfram.c ... eAndTheGoldenRatio/



  1. # Contributed by LeetCode user mereck.
  2. class Solution:
  3.   def fib(self, N):
  4.           golden_ratio = (1 + 5 ** 0.5) / 2
  5.           return int((golden_ratio ** N + 1) / 5 ** 0.5)
复制代码


https://leetcode.com/articles/fibonacci-number/
回复

使用道具 举报

🔗
 楼主| Myron2017 2020-6-24 06:37:57 | 只看该作者
全局:
1160. Find Words That Can Be Formed by Characters

基本操作,HashMap 统计次数,然后比较 key, 每个对应的 key freq 需要满足 chars 的要求。
然后通过一个 flag 记录, 如果达到就继续,达不到就跳过。
最后返回总长。
回复

使用道具 举报

🔗
 楼主| Myron2017 2020-6-24 07:08:05 | 只看该作者
全局:
1200. Minimum Absolute Difference
理解了题目就很容易,先求出 Minimum Absolute Difference , 然后在 检查 符合 Minimum Absolute Difference 的 pair。
但是会出现很多重复计算,所以需要排除。

2 pass 的解法,核心思想,在排序数组之后,如果 minimum absolute difference 改变了,那一定是初次遇到这个 minimum absolute difference



下面这个是 3 pass 的但是解法非常 pythonic


  1. class Solution:
  2.     def minimumAbsDifference(self, arr: List[int]) -> List[List[int]]:
  3.         arr.sort()
  4.         mn = min(b - a for a, b in zip(arr, arr[1:]))
  5.         return [[a, b] for a, b in zip(arr, arr[1:]) if b - a == mn]      

复制代码
回复

使用道具 举报

🔗
 楼主| Myron2017 2020-6-24 07:29:38 | 只看该作者
全局:
999. Available Captures for Rook

还是简单题目,不过还是参考下别人的答案,学习 Python 的写法,这个写法真是天秀啊,简洁。
如何把繁琐的 四个 if 写成一个循环。

回复

使用道具 举报

🔗
 楼主| Myron2017 2020-6-25 05:22:05 | 只看该作者
全局:
LeetCode 96. Unique Binary Search Trees

这个题目的关键就在 BST 上,所以你如果固定了 root node,就自动把 1~n 的数字分成了两份,left 和 right。
然后每个 left 和 right 其实都是前面的已经统计过的答案。
所以其实是 一个非常好的 dynamic programing 问题。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表