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

狗家conversion两轮

🔗
wtcupup 2017-10-1 15:18:19 | 只看该作者
全局:
  1. def findAllIndex2(s, t):
  2.     map = {}
  3.     for i, c in enumerate(s):
  4.         if c not in map:
  5.             map[c] = []
  6.             map[c] += i,
  7.         else:
  8.             map[c] += i,

  9.     res = []

  10.     def backtracking(res, map, t, start, tmp):
  11.         if start >= len(t):
  12.             new = []
  13.             for t in tmp:
  14.                 new.append(t)
  15.             res += new,
  16.             return
  17.         indexes = map[t[start]] if t[start] in map else []

  18.         for i in range(len(indexes)):
  19.             tmp += indexes[i],
  20.             backtracking(res, map, t, start + 1, tmp)
  21.             tmp.pop()

  22.     backtracking(res, map, t, 0, [])
  23.     return res


  24. print(findAllIndex2('abccddee', 'ade'))
复制代码
回复

使用道具 举报

🔗
returning 2017-10-2 14:37:50 | 只看该作者
全局:
第一题是不是这样:target是adee和aede返回的解答的个数都是相同的,所以只需要把相同char group在一起,比如adee,然后对每个char找到可能的index,然后直接就是所有index的combination,比如原字符如果4个e,那么任意选出2个就是一个组合,不明白楼主的dfs什么意思,需要考虑什么顺序吗?
回复

使用道具 举报

🔗
realife 2017-10-2 14:40:51 | 只看该作者
全局:
能不能拿return offer其实主要是看你项目做得如何,你的host给你写的评语怎么样。面试只要不太差不会成为不给offer的原因。
回复

使用道具 举报

🔗
returning 2017-10-2 14:42:21 | 只看该作者
全局:

21行到24行貌似不对吧,你从indexes里面取出一个index,是不是就不能再用作相同的char了?比如taget是adee,如果第一个e用了某个index,第二个e应该不能再用了。
回复

使用道具 举报

🔗
wtcupup 2017-10-2 15:18:06 | 只看该作者
全局:
returning 发表于 2017-10-2 14:42
21行到24行貌似不对吧,你从indexes里面取出一个index,是不是就不能再用作相同的char了?比如taget是ade ...

多谢指正
  1. def findAllIndex2(s, t):
  2.     map = {}
  3.     for i, c in enumerate(s):
  4.         if c not in map:
  5.             map[c] = []
  6.             map[c] += i,
  7.         else:
  8.             map[c] += i,

  9.     res = []
  10.     visited = set()

  11.     def backtracking(res, map, t, start, tmp, visited):
  12.         if start >= len(t):
  13.             res += list(tmp),
  14.             return
  15.         indexes = map[t[start]] if t[start] in map else []

  16.         for i in indexes:
  17.             if i not in visited:
  18.                 tmp += i,
  19.                 visited.add(i),
  20.                 backtracking(res, map, t, start + 1, tmp, visited)
  21.                 tmp.pop()
  22.                 visited.remove(i)


  23.     backtracking(res, map, t, 0, [], visited)
  24.     s = [sorted(i) for i in res]
  25.     return [s[i] for i in range(len(s)) if i == 0 or s[i] != s[i-1]]


  26. print(findAllIndex2('abccddee', 'adee'))
复制代码
回复

使用道具 举报

🔗
david.fang 2017-10-2 15:24:24 | 只看该作者
全局:
求教楼主:记忆化+搜索 不是 DP吗?
回复

使用道具 举报

🔗
 楼主| Cathy667 2017-10-3 00:04:12 | 只看该作者
全局:
david.fang 发表于 2017-10-2 15:24
求教楼主:记忆化+搜索 不是 DP吗?

就是DP啊
回复

使用道具 举报

🔗
lihuaxin0033 2017-10-4 05:15:00 | 只看该作者
全局:

感觉可以递归函数里加一个pos记录之前访问到了s的哪一位,这样就不需要visited,也不需要在最后去重了
回复

使用道具 举报

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

本版积分规则

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