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

BB 感觉挂经

全局:

2020(10-12月) 码农类General 硕士 实习@bloomberg - 校园招聘会 - Onsite 校园招聘会  | | Fail | 应届毕业生

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

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

x
您好!
本帖隐藏的内容需要积分高于 201 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 201 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies

评分

参与人数 4大米 +17 收起 理由
取个响亮的名号 + 3 给你点个赞!
匿名用户-6TCNK + 10
sonic28 + 2 很有用的信息!
insular + 2 给你点个赞!

查看全部评分


上一篇:猫头鹰 店面
下一篇:热带雨林在线1
🔗
BestOreo 2019-10-19 22:57:54 | 只看该作者
全局:
请问第一题为什么要用stack,双指针O(1)不是更好?
回复

使用道具 举报

🔗
 楼主| __jind 2019-10-20 00:02:49 来自APP | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
 楼主| __jind 2019-10-20 05:15:30 | 只看该作者
全局:
哥大懒猫 发表于 2019-10-19 22:57
请问第一题为什么要用stack,双指针O(1)不是更好?

  1. class Solution():
  2.     def two_pointers(self, s):
  3.         # we always use p0, and if we find a repeating element we use p1
  4.         p0 = 0
  5.         p1 = None

  6.         while p0 < len(s):
  7.             p1 = p0 if p1 == None else p1 # p1 is not None, when we find our previous repeating elements

  8.             while p1 + 1 < len(s) and s[p1+1] == s[p0]:
  9.                 p1 += 1

  10.             if p1 - p0 + 1 >= 3:
  11.                 s = s[:p0] + s[p1+1:]
  12.                 # we want to check previous element
  13.                 p1 = p0
  14.                 while p0 - 1 >= 0 and s[p0-1] == s[p0]:
  15.                     p0 -= 1
  16.                 p0 -= 1 # because later we have p0 += 1
  17.             else:
  18.                 p0 = p1 # we are not eliminating things,
  19.                 # but if we have two repeating elements we don't need to check the second element
  20.                 p1 = None

  21.             p0 += 1

  22.         return s


  23.     def stack(self, s):
  24.         stack = []
  25.         p = 0
  26.         while p < len(s):
  27.             lis = [s[p]]

  28.             while stack != [] and s[p] == stack[-1]:
  29.                 lis.append(stack.pop())

  30.             while p + 1 < len(s) and s[p+1] == s[p]:
  31.                 p += 1
  32.                 lis.append(s[p])

  33.             if len(lis) >= 3:
  34.                 pass

  35.             else:
  36.                 for j in lis:
  37.                     stack.append(j)

  38.             p += 1
  39.         return "".join(stack)

  40. a = Solution()
  41. print(a.two_pointers('baacccabb'))
  42. print(a.two_pointers(''))
  43. print(a.two_pointers('abb'))


  44. print("stack")
  45. print(a.stack('baacccabb'))
  46. print(a.stack(''))
  47. print(a.stack('abb'))
复制代码




第一个写的不好,turns out 两个差不多
回复

使用道具 举报

🔗
BestOreo 2019-10-20 05:21:26 | 只看该作者
全局:
  1. public class candycrush {
  2.     static String candyCrush(String candy){
  3.         StringBuilder sb = new StringBuilder(candy);
  4.         while (sb.length() > 0){
  5.             StringBuilder next = new StringBuilder();
  6.             for(int i=0,j=1; j<=sb.length(); j++){
  7.                 if(j == sb.length() || sb.charAt(j) != sb.charAt(j-1)){
  8.                     if(j-i < 3){
  9.                         next.append(sb.substring(i, j));
  10.                     }
  11.                     i = j;
  12.                 }
  13.             }
  14.             if(next.length() == sb.length()){
  15.                 return next.toString();
  16.             }
  17.             sb = next;
  18.         }
  19.         return sb.toString();
  20.     }

  21.     public static void main(String[] args){
  22.         System.out.println(candyCrush("caaaccdc").equals("dc"));
  23.         System.out.println(candyCrush("dcaaaccdd").equals(""));
  24.         System.out.println(candyCrush("ccaaab").equals("ccb"));
  25.         System.out.println(candyCrush("cc").equals("cc"));
  26.         System.out.println(candyCrush("aabbbaa").equals(""));
  27.     }
  28. }
复制代码
回复

使用道具 举报

🔗
 楼主| __jind 2019-10-20 05:41:33 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
kirska 2019-10-20 06:13:07 | 只看该作者
全局:
是应该用stack,蠡口幺二凌久

评分

参与人数 2大米 +5 收起 理由
frk + 3 很有用的信息!
__jind + 2 谢谢,这两个题很像

查看全部评分

回复

使用道具 举报

🔗
quhe333 2019-10-29 17:09:45 | 只看该作者
全局:
kirska 发表于 2019-10-20 06:13
是应该用stack,蠡口幺二凌久

实名摸一下,tql
回复

使用道具 举报

全局:
请教下楼主,第二题follow-up不用循环语句该怎么做呢?还会加米的,感谢!
回复

使用道具 举报

🔗
 楼主| __jind 2020-1-30 11:59:25 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies

评分

参与人数 1大米 +3 收起 理由
取个响亮的名号 + 3 给你点个赞!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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