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

Zenefits 电面

全局:

2015(4-6月) 码农类General 硕士 全职@zenefits - 内推 - 技术电面  | | Other | 应届毕业生

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

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

x
印度人

有点像 reverse polish notation 的变种,计算一个表达式的值的。要求自行设计表达式的数据结构并计算表达式的值。

有几种特殊情况
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
resssion 的List,再用一个Queue来决定问题。不知道有没有大神有更好的做法。




面完收到要求第二轮电面的邮件,有没有大神知道这是什么意思?是面得不太好吗?

评分

参与人数 3大米 +52 收起 理由
laonawuli + 10 感谢分享!
yanyanlr + 40
cuiyang36 + 2 回答的很好!

查看全部评分


上一篇:Amazon一小时四道题的OA有人做过吗 > <
下一篇:facebook加面
推荐
johnnywsd 2015-5-12 12:14:20 | 只看该作者
全局:
  1. class Solution:

  2.     def eval(self, expr):
  3.         operator = expr[0]
  4.         expr = expr[1:]
  5.         evaled_expr = []
  6.         for it in expr:
  7.             if isinstance(it, list):
  8.                 evaled = self.eval(it)
  9.                 evaled_expr.append(evaled)
  10.             else:
  11.                 evaled_expr.append(it)
  12.         res = 0
  13.         if operator == '+':
  14.             res = sum(evaled_expr)
  15.         elif operator == '*':
  16.             res = 1
  17.             for it in evaled_expr:
  18.                 res *= it
  19.         elif operator == '-':
  20.             res = evaled_expr[0] if len(evaled_expr) > 0 else 0
  21.             for it in evaled_expr[1:]:
  22.                 res -= it
  23.         elif operator == '/':
  24.             res = evaled_expr[0] if len(evaled_expr) > 0 else 0
  25.             for it in evaled_expr[1:]:
  26.                 res /= it
  27.         return res
复制代码
Test Cases:
  1. import unittest
  2. from solution import Solution


  3. class Test(unittest.TestCase):

  4.     def test1(self):
  5.         s = Solution()
  6.         expr = ['+', 1, 2, ['*', 1, 3]]
  7.         res = s.eval(expr)
  8.         self.assertEqual(res, 6)

  9.     def test2(self):
  10.         s = Solution()
  11.         expr = ['+', 1, 2, ['*', 2, 3]]
  12.         res = s.eval(expr)
  13.         self.assertEqual(res, 9)

  14.     def test3(self):
  15.         s = Solution()
  16.         expr = ['+', ['*'], ['-'], ['/']]
  17.         res = s.eval(expr)
  18.         self.assertEqual(res, 1)

  19.     def test4(self):
  20.         s = Solution()
  21.         expr = ['+', 1, 2, ['*', 2, 3], ['-', 4, 5], ['/', 8, 2]]
  22.         res = s.eval(expr)
  23.         self.assertEqual(res, 12)

  24. if __name__ == '__main__':
  25.     unittest.main(verbosity=2)
复制代码
回复

使用道具 举报

推荐
huahuazhu 2015-5-17 07:21:24 | 只看该作者
全局:
没太想明白楼主的做法,我的想法跟johnnywsd 的类似,不过python我不熟,我用java的话就是这样一个class
class Expression{
char operator;
list<double> numbers;
list<Expression> innerExpression;
...
}

但是这样比较麻烦的是需要有一个parser 把类似 [+, 1, 2, 3, [*, 2, 3], 6]  的输入变成一个object

我没想明白怎么用“Expresssion 的List,再用一个Queue来决定问题”,我这种定义class的方法,貌似一个object就足够了
回复

使用道具 举报

全局:
ManitobaFarmer 发表于 2015-5-1 11:10
你愿意写成 String[] 的形式也可以,数据结构随便设计,能计算这么个 expression 的值就行。

我知道,我的意思是这个expression里面是否用中括号区分了不同的嵌套部分,还是没有中括号只靠字符去区分?
回复

使用道具 举报

🔗
GatherNone 2015-5-1 07:59:55 | 只看该作者
全局:
第四种情况应该是1 + 2 + 1 * 3 = 6 吧
回复

使用道具 举报

🔗
 楼主| ManitobaFarmer 2015-5-1 10:59:45 | 只看该作者
全局:
GatherNone 发表于 2015-5-1 07:59
第四种情况应该是1 + 2 + 1 * 3 = 6 吧

恩,打错了,不好意思。
回复

使用道具 举报

🔗
xieqilu1989 2015-5-1 11:04:10 | 只看该作者
全局:
楼主,这个原始的输入带那个中括号吗?
回复

使用道具 举报

🔗
 楼主| ManitobaFarmer 2015-5-1 11:10:36 | 只看该作者
全局:
xieqilu1989 发表于 2015-5-1 11:04
楼主,这个原始的输入带那个中括号吗?

你愿意写成 String[] 的形式也可以,数据结构随便设计,能计算这么个 expression 的值就行。
回复

使用道具 举报

🔗
 楼主| ManitobaFarmer 2015-5-1 11:27:17 | 只看该作者
全局:
xieqilu1989 发表于 2015-5-1 11:23
我知道,我的意思是这个expression里面是否用中括号区分了不同的嵌套部分,还是没有中括号只靠字符去区分 ...

自己想办法解决。逻辑上是有个中括号区分的,怎么实现就是面试者要处理的问题。
回复

使用道具 举报

🔗
xieqilu1989 2015-5-1 12:05:10 | 只看该作者
全局:
ManitobaFarmer 发表于 2015-5-1 11:27
自己想办法解决。逻辑上是有个中括号区分的,怎么实现就是面试者要处理的问题。

明白了!多谢啦!
回复

使用道具 举报

🔗
ShadowChaser 2015-5-1 12:28:58 | 只看该作者
全局:
那么,类似于[+, 1, 2, 3, [*, 2, 3], 6] 这种算合法输入么?
如果不算的话,我觉得逆序处理list比较简单吧
[+, 1, 2, 3, *, 2, 3, 6]  => [+, 1, 2, 3, 36] => 42
回复

使用道具 举报

🔗
 楼主| ManitobaFarmer 2015-5-1 23:18:01 | 只看该作者
全局:
ShadowChaser 发表于 2015-5-1 12:28
那么,类似于[+, 1, 2, 3, [*, 2, 3], 6] 这种算合法输入么?
如果不算的话,我觉得逆序处理list比较简单 ...

算,结果是 1 + 2 + 3 + (2 * 3) + 6 = 18
回复

使用道具 举报

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

本版积分规则

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