亚麻OA求砸,面经神衣护体!


一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
天天打游戏、照样领工资、还办H1B
这份工作你要不要?
把贵司招聘信息放这里
查看: 1094|回复: 7
收起左侧

亚麻,丢棒球,求拍砖

[复制链接] |试试Instant~ |关注本帖
uscgaopeng 发表于 2017-7-10 10:05:26 | 显示全部楼层 |阅读模式

2017(7-9月) 码农类 博士 全职@Amazon - 内推 - 其他 |Other其他

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

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
看到地里亚麻最近的一道面试题。虽然看起来简单,但是理解题意还是很tricky的。题目如下。怕真面到出问题,我把自己的代码写出来了。求拍砖!谢谢!
Johns play a game in whichhe throws a baseball at various blocks marked with a symbol so asto  knock these out. A score is computed for each throw. The 'lastscore' is the score of the previous throw (or 0 if there is no previous throw)and the total score is the sum of the scores of all the throws. The symbol on ablock can be an integer, a sign or a letter. Each sign or letter represents aspecial rule as given below.

if a throw hits a block marked with an integer,the score for that throw is the value of that integer.. Waral 鍗氬鏈夋洿澶氭枃绔,
if a throw hits a block marked with an 'X', thescore for that throw is double the last score
if a throw hits a block marked with an '+', thescore for that throw is the sum of the last two scores. 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
if a throw hits a block marked with an 'Z', thelast score is removed, as though the last throw never happened. Its valuedoesn't count towards the total score, and the subsequent throws will ingnoreit when computing their values
. 鐣欏鐢宠璁哄潧-

评分

1

查看全部评分

本帖被以下淘专辑推荐:

 楼主| uscgaopeng 发表于 2017-7-10 10:16:04 | 显示全部楼层
compute total score.
代码如下(是字数有限制吗?代码原贴没有显示)
int score(String[] s) {
. Waral 鍗氬鏈夋洿澶氭枃绔,                int total_score = 0;
                Stack<Integer> nums = new Stack<Integer>();

                int num;
                for (int i = 0; i < s.length; i++) {
                        if (s[i].charAt(0)!='X'&&s[i].charAt(0)!='Z'&&s[i].charAt(0)!='+') {
                                num = Integer.valueOf(s[i]);
                                total_score = total_score + num;
                                nums.push(num);                               
                        }
                        if (s[i].charAt(0) =='X') {
                                if (!nums.isEmpty()) {
                                        int tmp = nums.pop();
                                        total_score = total_score + tmp*2;. 1point 3acres 璁哄潧
                                        nums.push(tmp*2);
                                }. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴

                        }
                        if (s[i].charAt(0) =='Z') {
                                total_score = total_score - (nums.isEmpty()?0:nums.pop());
                                . From 1point 3acres bbs
                        }
                        if (s[i].charAt(0) =='+') {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
                                if (!nums.isEmpty()) {
                                        int tmp1 = nums.pop();        .鐣欏璁哄潧-涓浜-涓夊垎鍦
                                        if (!nums.isEmpty()) {
                                                int tmp2 = nums.pop();
                                                total_score = total_score + tmp1 + tmp2;
                                                nums.push(tmp2);
                                                nums.push(tmp1);
                                                nums.push(tmp1+tmp2);. visit 1point3acres.com for more.
                                               
                                        }
                                        else {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
                                                total_score = total_score + tmp1;
                                                nums.push(tmp1);
                                                nums.push(tmp1);
                                               
. 1point 3acres 璁哄潧                                        }
                                }               
                        }
                        . 鍥磋鎴戜滑@1point 3 acres
                }
               
                return total_score;
        }
回复 支持 反对

使用道具 举报

 楼主| uscgaopeng 发表于 2017-7-10 11:15:47 | 显示全部楼层
例子是这样的
输入["5", "-2", "4", "Z","X", 9, "+", "+"]
output: 27
5 : sum = 5
-2 : sum = 5 - 2 = 3
4 : sum = 3 + 4 = 7
Z : sum = 7 - 4 = 3
X : sum = 3 + -2 * 2 = -1 (4被移除了,前一个成绩是-2)
9 : sum = -1 + 9 = 8
+ : sum = 8 + 9 - 4 = 13 (前两个成绩是9和-4)
+ : sum = 13 + 9 + 5 = 27 (前两个成绩是5 和 9)
回复 支持 反对

使用道具 举报

dsxz 发表于 2017-7-10 12:59:19 | 显示全部楼层
uscgaopeng 发表于 2017-7-10 10:16
compute total score.
代码如下(是字数有限制吗?代码原贴没有显示)
int score(String[] s) {

. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴感觉加号这块有bug
如果stack时只有一个数的时候,你把它push了两遍
这样不对,接着来两个Z就要出错
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
补充内容 (2017-7-10 13:00):
哦,一个Z就出错
回复 支持 反对

使用道具 举报

wans90 发表于 2017-7-10 16:55:36 | 显示全部楼层
dsxz 发表于 2017-7-10 12:59. From 1point 3acres bbs
感觉加号这块有bug
如果stack时只有一个数的时候,你把它push了两遍
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴这样不对,接着来两个Z就要出错

沒有吧,第一個push是把pop出來的push回去,第二個push是把剛剛加進去totalscore的push進去
回复 支持 反对

使用道具 举报

 楼主| uscgaopeng 发表于 2017-7-10 21:07:55 | 显示全部楼层
dsxz 发表于 2017-7-10 12:59
感觉加号这块有bug
如果stack时只有一个数的时候,你把它push了两遍
这样不对,接着来两个Z就要出错

你说一个Z就出错,能讲一下细节吗? 因为我用["5", "-2", "4", "Z","X", 9, "+", "+"] 调试的,只有一个Z,也得到结果了
回复 支持 反对

使用道具 举报

dsxz 发表于 2017-7-10 23:55:47 | 显示全部楼层
uscgaopeng 发表于 2017-7-10 21:07. visit 1point3acres.com for more.
你说一个Z就出错,能讲一下细节吗? 因为我用["5", "-2", "4", "Z","X", 9, "+", "+"] 调试的,只有一个Z ...

试下 “5”, “+",  "Z"……不太确定,但是觉得你连着push两次是有问题的
回复 支持 反对

使用道具 举报

shufezq 发表于 2017-7-11 03:32:00 | 显示全部楼层
我觉得lz的code正确性没问题,不过可以再简洁一点,比如说有的地方的stack用peek可能会更好
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-10-17 14:04

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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