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

刷题记录帖子

🔗
 楼主| Myron2017 2020-7-30 06:12:14 | 只看该作者
全局:
1323. Maximum 69 Number

其实就是 Python list index 方法, try except 的练习

回复

使用道具 举报

🔗
 楼主| Myron2017 2020-7-30 23:48:11 | 只看该作者
全局:
140. Word Break II

MaxMing 的这个讲解真精彩,入木三分, https://www.youtube.com/watch?v=wSGIQW0uaeo

核心要点,如何利用 memo 简化计算并且得到结果。同时通过 DFS 找到合适的单词。

回复

使用道具 举报

🔗
 楼主| Myron2017 2020-8-1 09:44:31 | 只看该作者
全局:
LC 70. Climbing Stair

其实就是斐波拉契数列的在特定场景中的实现,参考这个官方讲解非常好。

https://leetcode.com/articles/climbing-stairs/
回复

使用道具 举报

🔗
 楼主| Myron2017 2020-8-2 05:39:44 | 只看该作者
全局:
LC 520. Detect Capital

简单题,其实还是非常简单的。

主要下 Python 的惯用法,还有如何combine case 2 和 case 3



最后吐槽下 Python 的 函数命名,天秀,为什么不保持一致。多写个 s 其实也没多少工作量。
 
回复

使用道具 举报

🔗
 楼主| Myron2017 2020-8-5 10:00:54 | 只看该作者
全局:
125. Valid Palindrome

简单题目,其实就是一个 double pointer 的题目,参考这个帖子。

https://maxming0.github.io/2020/08/03/Valid-Palindrome/
回复

使用道具 举报

🔗
 楼主| Myron2017 2020-8-5 10:15:07 | 只看该作者
全局:
342. Power of Four

我是直接 log 然后判断奇数和偶数做得。

还有更加巧妙的,参考这个贴子, https://maxming0.github.io/2020/08/04/Power-of-Four/

一个数是4的幂一定是2的幂,区别是对3取余的结果不同

为什么偶数是 n&(n-1) == 0 是偶数除了0,https://maxming0.github.io/2020/06/08/Power-of-Two/ 有详细讲解

代码



  1. class Solution:
  2.     def isPowerOfFour(self, num: int) -> bool:
  3.         return num > 0 and num & (num - 1) == 0 and num % 3 == 1

复制代码
回复

使用道具 举报

🔗
 楼主| Myron2017 2020-8-7 00:11:07 | 只看该作者
全局:
442 Find All Duplicates in an Array

我也想到了下标对应数值的map,就是思路是把元素挪动位置,这样要是出现位置被占用就知道重复了。
但是这个思路需要考虑的 edge case 太多了,不如直接把遇到的元素数值反转成负数,这样更加简洁方便,通过负数与否记录是否出现。推荐这个视频讲解,秒,三言两语说明了思路和要点。 https://www.youtube.com/watch?v=Jgz2nHjydUY&t=0s

回复

使用道具 举报

🔗
 楼主| Myron2017 2020-8-8 03:47:14 | 只看该作者
全局:
LeetCode 987 Vertical Order Traversal of a Binary Tree

Sorting a List of Elements by the First element but if Equal sort by the second == > Forming a tuple and range them by order
  1. tmp = sorted(res[i], key=lambda tup: (-1 * tup[1],tup[2]))
复制代码


MaxMing 的讲解很好, https://maxming0.github.io/2020/ ... l-of-a-Binary-Tree/

当然我的做法就是慢慢来解决,当然代码不太清晰但是还是可以看出功能。

回复

使用道具 举报

🔗
 楼主| Myron2017 2020-8-9 21:31:57 | 只看该作者
全局:
LC 994 Rotting Oranges

这个题目其实还是很明显的 DFS,但是做得时候很多细节,很多 edge case 需要仔细考虑。
核心要点
(1) 如何解决何时结束的问题??
通过最后的数目来判断,改变的 rotten 数目应该等于 fresh 数目

(2) 如何避免反复 DFS?
通过 queue 来解决重复 DFS 的问题。

(3) 用 queue 的时候,有一个问题,比如 queue 有三次调用,其实时间只过了 2 min,因为我们统计的是间隔时间。
很简单,


  1. if queue:
  2.         result +=1
复制代码


只有 queue 不空才统计。



  1. class Solution:
  2.     def orangesRotting(self, grid: List[List[int]]) -> int:
  3.         result = 0
  4.         rotten = 0
  5.         nrows = len(grid)
  6.         ncols = len(grid[0])
  7.         fresh = 0
  8.         queue = []
  9.         # get basic statistics
  10.         for i in range(nrows):
  11.             for j in range(ncols):
  12.                 if grid[i][j] == 1:
  13.                     fresh += 1
  14.                 if grid[i][j] == 2:
  15.                     queue.append((i,j))
  16.         # using rotten orange queue to change
  17.         while queue:
  18.             rottenLen = len(queue)
  19.             #print(queue)
  20.             while rottenLen > 0:
  21.                 r,c = queue.pop(0)
  22.                 # search four adjacent cells
  23.                 if r-1 >= 0 and grid[r-1][c] == 1:
  24.                     grid[r-1][c] = 2
  25.                     queue.append((r-1, c))
  26.                     rotten += 1
  27.                 if c-1 >= 0 and grid[r][c-1] == 1:
  28.                     grid[r][c-1] = 2
  29.                     queue.append((r, c-1))
  30.                     rotten += 1
  31.                 if r+1 < nrows and grid[r+1][c] == 1:
  32.                     grid[r+1][c] = 2
  33.                     queue.append((r+1, c))
  34.                     rotten += 1
  35.                 if c+1 < ncols and grid[r][c+1] == 1:
  36.                     grid[r][c+1] = 2
  37.                     queue.append((r, c+1))
  38.                     rotten += 1
  39.                 rottenLen -= 1
  40.             if queue:
  41.                 result += 1

  42.         if rotten == fresh:
  43.             return result
  44.         else:
  45.             return -1
复制代码
回复

使用道具 举报

🔗
 楼主| Myron2017 2020-8-10 22:23:07 | 只看该作者
全局:
本帖最后由 Myron2017 于 2020-8-10 22:25 编辑

LC 171 Excel Sheet Column Number

Easy 题,就是 26 进制题目的变体。

不过写法上,其实也有点讲究,更好地解法不是一遍遍计算 26^n 的结果,而是应该这样,


不过实际检验下,发现其实也没多大优化。。。估计是太短了,同时其他计算才是主要部分。



回复

使用道具 举报

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

本版积分规则

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