12
返回列表 发新帖
楼主: Alice_koi
跳转到指定楼层
上一主题 下一主题
收起左侧

骨骼 滇缅

🔗
 楼主| Alice_koi 2018-10-16 08:52:44 | 只看该作者
全局:

对对对,就是这个题,Thanks
回复

使用道具 举报

🔗
LaSeineFirenze 2018-10-24 15:09:59 | 只看该作者
全局:
那是不是可以先构造出0到N之间只由0,1,6,9,8构成的数字,再判断每个数是不是回文的,就像贰肆捌要求的那样, 把这些数减掉就好了?
感觉当场写这个DFS有点难欸……
回复

使用道具 举报

🔗
 楼主| Alice_koi 2018-10-24 15:16:33 | 只看该作者
全局:
LaSeineFirenze 发表于 2018-10-24 15:09
那是不是可以先构造出0到N之间只由0,1,6,9,8构成的数字,再判断每个数是不是回文的,就像贰肆捌要求的那样 ...

是输出不是剪掉,最后输出的是会被误判的数字
回复

使用道具 举报

🔗
LaSeineFirenze 2018-10-24 16:27:05 | 只看该作者
全局:
Alice_koi 发表于 2018-10-24 15:16
是输出不是剪掉,最后输出的是会被误判的数字

明白,那应该可以用DFS做,而且比248要简单一些,枚举各个位置上的数再判断就好……
那么复杂度应该是 5^(log10(N))=N^(log10(5))=N^0.7 这样?不知道面试官会不会接受这样的答案
回复

使用道具 举报

🔗
myoeee 2018-10-24 21:34:08 来自APP | 只看该作者
全局:
和儿丝吧不一样。6倒过来是9,符合这题要求,不符合儿丝吧
回复

使用道具 举报

🔗
wulaoshi250 2018-10-30 10:21:05 | 只看该作者
全局:
LaSeineFirenze 发表于 2018-10-24 16:27
明白,那应该可以用DFS做,而且比248要简单一些,枚举各个位置上的数再判断就好……
那么复杂度应该是 5 ...

请问下那这道题目是不是就变成了求0,1,6,8,9的permutation呀?但是要在给定的0 到 N的范围内
回复

使用道具 举报

🔗
hlckl123456 2018-10-30 12:08:50 | 只看该作者
全局:
现在电面都考hard题了吗 = =
回复

使用道具 举报

🔗
hlckl123456 2018-10-30 12:20:14 | 只看该作者
全局:
youtube一个老师讲解的视频  那个老师还让大家不用太准备这道题,说面试一般不会出现, 楼主的运气真的不大好。。
回复

使用道具 举报

🔗
hlckl123456 2018-10-30 12:36:14 | 只看该作者
全局:
想问一下楼主 面试官是直接问你248的吗。
还是说先做了247 再做的248
248在247的基础上比较简单。
求一个permutation 然后去掉不在range内的数。
回复

使用道具 举报

🔗
hlckl123456 2018-10-30 12:54:06 | 只看该作者
全局:
贴一下我的代码 基本完全套用 247 击败 70%
  1. def strobogrammaticInRange(self, low, high):
  2.         """
  3.         :type low: str
  4.         :type high: str
  5.         :rtype: int
  6.         """
  7.         
  8.         self.low, self.high = int(low), int(high)
  9.         start, end = len(low), len(high)
  10.         count = 0
  11.         for i in range(start, end + 1):
  12.             count += self.find_strong_grammactic(i, {})
  13.         
  14.         return count
  15.    
  16.     def find_strong_grammactic(self, n, memo):
  17.         graph = {'0': '0', '1':'1', '6': '9', '8': '8', '9': '6'}
  18.         count, arr = 0, self.find_S(n, graph, memo)
  19.         for n in arr:
  20.             if (n == "0" or n[0] != "0") and self.low <= int(n) <= self.high:
  21.                 count += 1
  22.         
  23.         return count   
  24.         
  25.     def find_S(self, n, graph, memo):
  26.         if n == 0:
  27.             return []
  28.         if n == 1:
  29.             return ["0", "1", "8"]
  30.         if n == 2:
  31.             return ["00", "11", "88", "69", "96"]
  32.         if n > 2:
  33.             base = self.find_S(n - 2, graph, memo)
  34.         
  35.         res = self.get_all_combinations(base, graph)
  36.         memo[n] = res
  37.         return res
  38.    
  39.     def get_all_combinations(self, base, graph):
  40.         res = []
  41.         for a, b in graph.items():
  42.             for st in base:
  43.                 res.append(a + st + b)
  44.         return res
复制代码
回复

使用道具 举报

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

本版积分规则

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