查看: 1619| 回复: 5
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] 947. Most Stones Removed with Same Row or Column

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
题目在这 https://leetcode.com/problems/mo ... same-row-or-column/
我想不太明白我这么做的TLE在哪,脑子混乱了突然间,希望大家能帮帮我!

I am trying to get all possible ways to remove stones.
  1. class Solution:
  2.     def removeStones(self, stones) -> int:
  3.         row = collections.defaultdict(set)
  4.         col = collections.defaultdict(set)
  5.         for stone in stones:
  6.             # so that row, col number i has these many stones
  7.             row[stone[0]].add((stone[0], stone[1]))
  8.             col[stone[1]].add((stone[0], stone[1]))
  9.         self.res = 0

  10.         def dfs(row, col, stones, remove):
  11.             self.res = max(self.res, remove)
  12.             for i in range(len(stones)):
  13.                 stone = (stones[i][0], stones[i][1])
  14.                 # check if the stone has been moved
  15.                 if stone not in row[stone[0]] and stone not in col[stone[1]]:
  16.                     continue
  17.                 # if there are more than one stone in the same row or column
  18.                 if len(row[stone[0]]) > 1 or len(col[stone[1]]) > 1:
  19.                     removed_row = False
  20.                     removed_col = False
  21.                     # backtrack
  22.                     if stone in row[stone[0]]:
  23.                         row[stone[0]].remove(stone)
  24.                         removed_row = True
  25.                     if stone in col[stone[1]]:
  26.                         col[stone[1]].remove(stone)
  27.                         removed_col = True
  28.                         
  29.                     dfs(row, col, stones, remove + 1)

  30.                     # backtrack
  31.                     if removed_row:
  32.                         row[stone[0]].add(stone)
  33.                     if removed_col:
  34.                         col[stone[1]].add(stone)

  35.         dfs(row, col, stones, 0)
  36.         return self.res
复制代码




上一篇:speed 跟 memory 哪个更重要
下一篇:LeetCode: FB高频题(从最高频到低频)序号共224道,截止至 2019.10.18
🔗
Airtnp 2019-10-18 10:09:17 | 只看该作者
全局:
一个2^N在N有1e4的时候当然会TLE..
回复

使用道具 举报

🔗
 楼主| luciferth000 2019-10-18 10:55:44 | 只看该作者
全局:
Airtnp 发表于 2019-10-18 10:09
一个2^N在N有1e4的时候当然会TLE..

谢谢!能否解释一下为什么是2^N? 难道不是N^3 吗?对于每一个点,要经历n-1次的尝试,一共N个点,n^3?
回复

使用道具 举报

🔗
Shen.TT 2019-10-18 11:09:37 | 只看该作者
全局:
这个题就是number of island的变种,4周相邻改成相同col或者row相邻就行了。Union find,DFS都行
回复

使用道具 举报

🔗
 楼主| luciferth000 2019-10-18 11:34:29 | 只看该作者
全局:
Shen.TT 发表于 2019-10-18 11:09
这个题就是number of island的变种,4周相邻改成相同col或者row相邻就行了。Union find,DFS都行

是的我也看了答案,但就想知道我的原逻辑哪里出问题了
回复

使用道具 举报

🔗
Airtnp 2019-10-18 15:46:17 | 只看该作者
全局:
本帖最后由 Airtnp 于 2019-10-18 15:48 编辑
luciferth000 发表于 2019-10-18 10:55
谢谢!能否解释一下为什么是2^N? 难道不是N^3 吗?对于每一个点,要经历n-1次的尝试,一共N个点,n^3?

你写的逻辑是所有点都可以取或者不取。。。
T(n) = T(n-1)+T(n-2)+...T(1) + O(N^2)
哦不对你这个是N!...
T(n) = nT(n-1) +O(N^2)
回复

使用道具 举报

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

本版积分规则

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