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

狗家电面新鲜挂经

全局:

2020(7-9月) 码农类General 硕士 全职@google - 内推 - 技术电面  | | Fail | 在职跳槽

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

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

x
本帖最后由 泡利不相容 于 2020-7-22 05:11 编辑

国人大哥

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


虽然以前写过一次,但这次做起来还是磕磕碰碰写完最后有点bug被叫停问问题,八成是挂了,不知道能不能要求加面一轮

评分

参与人数 5大米 +7 收起 理由
frk + 1 很有用的信息!
匿名用户-CVMCJ + 2
ninjax + 1 很有用的信息!
Houdini + 1 很有用的信息!
陌生用户 + 2 很有用的信息!

查看全部评分


上一篇:开花堡 VO
下一篇:G家实习店面
推荐
YZPYAN 2020-7-26 05:32:48 | 只看该作者
全局:
因为只有+ -,所以只需要stack记录sign,然后根据情况判断是否取反,或者负负得正的情况
回复

使用道具 举报

🔗
ninjax 2020-7-25 11:47:20 | 只看该作者
全局:
本帖最后由 ninjax 于 2020-7-25 12:05 编辑

不知道出结果没? stack只能存sign...完全没思路

磨出来一个
  1. class Solution:
  2.     def calculate(self, s: str) -> int:
  3.         return self._calc(s, 0)
  4.    
  5.    
  6.     def _calc(self, s, start):
  7.         i = start
  8.         ans = 0
  9.         sign = 1
  10.         num = 0
  11.         while i < len(s):
  12.             if s[i] == "(":
  13.                 end, val = self._calc(s, i+1)
  14.                 ans += sign*val
  15.                 i = end+1
  16.             elif s[i] == ")":
  17.                 return i, ans
  18.             elif s[i] == "+":
  19.                 sign = 1
  20.                 i += 1
  21.             elif s[i] == "-":
  22.                 sign = -1
  23.                 i += 1
  24.             elif s[i].isdigit():
  25.                 while i < len(s) and s[i].isdigit():
  26.                     num = num*10 + int(s[i])
  27.                     i += 1
  28.                 ans += num*sign
  29.                 num = 0
  30.             else:
  31.                 i += 1
  32.         return ans + sign*num
  33.             
复制代码

回复

使用道具 举报

🔗
bigboss789 2020-7-28 10:24:15 | 只看该作者
全局:
Stack里面只能存sign, 那之前计算的临时结果要求放在一个变量里面? 比如计算:
1 + ( 2 - ( 3 +4) -5)
遇到2前面那个左括号,正常思路 是tmpRes = 1 push, sign '+' push。 现在stack里面不能push 1进去,那么1保存在变量比如叫tmp。
那么继续遇到3前面的左括号,这时候又要压栈, 又有tmpRes = 2, 还要把这个2和之前tmp=1 先和起来?


评分

参与人数 1大米 +1 收起 理由
tensorboy + 1 赞一个

查看全部评分

回复

使用道具 举报

🔗
wwwsteven 2020-9-22 03:27:25 | 只看该作者
全局:
第二题 太坑了吧
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-3VHC3  2020-10-27 05:02:56
可以不用stack啊。 int i=0;
    public int calculate(String s) {
        if(s==null||s.isEmpty())return 0;
        int sign=1;        
        int n=s.length();
        int num=0;
        int left=0;
        while(i<n){
            char c=s.charAt(i++);
            if(c=='+'||c=='-'){
                left+=num*sign;
                sign=c=='+'?1:-1;
                num=0;
            }else if(c==' ')continue;
            else if(Character.isDigit(c)){
                num=num*10+c-'0';
            }else if(c=='('){
                num=calculate(s);
            }else if(c==')'){

                return left+num*sign;
            }

        }
        return left+num*sign;
    }
回复

使用道具 举报

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

本版积分规则

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