📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
12
返回列表 发新帖
楼主: 扫雪煮茶
跳转到指定楼层
上一主题 下一主题
收起左侧

2022 亚麻 OA1 新题最全截图

🔗
Lucky314 2022-1-28 15:43:50 | 只看该作者
全局:
谢谢楼主分享,祝好运!
回复

使用道具 举报

🔗
坂口鱼 2022-1-28 15:49:02 | 只看该作者
全局:
请问楼主是ng吗? 谢谢
回复

使用道具 举报

🔗
 楼主| 扫雪煮茶 2022-1-28 15:51:16 | 只看该作者
全局:
坂口鱼 发表于 2022-1-27 23:49
请问楼主是ng吗? 谢谢

是new grad的
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-HDLGV  2022-1-28 18:17:16

我太菜了

本帖最后由 匿名 于 2022-1-28 02:20 编辑

第二题确实是最简单的bfs,但发现自己一时竟然写不出来
回复

使用道具 举报

🔗
gousiji 2022-1-29 17:45:41 | 只看该作者
全局:
求问一下,第一题是什么思路啊
回复

使用道具 举报

🔗
PengChen0692 2022-4-9 07:56:07 | 只看该作者
全局:
这个题目跟做题网二十有点像,但是string可以rearrange, 所以只需要记录各种字符的数量就可以了。
用这种方法可以在O(n)时间算出来从左到右,当前位置为止,是不是balanced。然后从右到左再算一次,最后合并一下。

代码没有优化,也没有足够的测试样例,不知道对不对,欢迎讨论
  1. def balancedCount(s: str) -> int:
  2.     inbalances = [0] * 2
  3.     questions = 0
  4.     lbalance = [False] * len(s)
  5.     values = dict()
  6.     values['['] = 1
  7.     values[']'] = -1
  8.     values['('] = 1
  9.     values[')'] = -1
  10.     for i in range(len(s)):
  11.         c = s[i]
  12.         if c in '[]':
  13.             inbalances[0] += values[c]
  14.         elif c in '()':
  15.             inbalances[1] -= values[c]
  16.         else:
  17.             questions += 1
  18.         lbalance[i] = True if abs(inbalances[0]) + abs(inbalances[1]) - questions == 0 else False

  19.     questions = 0
  20.     inbalances = [0] * 2
  21.     rbalance = [False] * len(s)
  22.     for i in range(len(s) - 1, -1, -1):

  23.         c = s[i]
  24.         if c in '[]':
  25.             inbalances[0] += values[c]
  26.         elif c in '()':
  27.             inbalances[1] -= values[c]
  28.         else:
  29.             questions += 1
  30.         rbalance[i] = True if abs(inbalances[0]) + abs(inbalances[1]) - questions == 0 else False

  31.     ans = 0
  32.     for i in range(len(s) - 1):
  33.         if lbalance[i] and rbalance[i + 1]:
  34.             ans += 1
  35.     return ans
复制代码
回复

使用道具 举报

全局:
PengChen0692 发表于 2022-4-9 07:56
这个题目跟做题网二十有点像,但是string可以rearrange, 所以只需要记录各种字符的数量就可以了。
用这种 ...

这个解法厉害了
我没想到要左右分别扫一次
回复

使用道具 举报

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

本版积分规则

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