一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投,内推你去多家公司面试
Airbnb 数据科学职位
in analytics and inference
电商初创公司Good Days
招聘SDE/UI/TPM等职位实习生
把贵司招聘信息放这里
查看: 1318|回复: 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.. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
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
. 鐣欏鐢宠璁哄潧-

评分

2

查看全部评分

本帖被以下淘专辑推荐:

 楼主| uscgaopeng 发表于 2017-7-10 10:16:04 | 显示全部楼层
compute total score.
代码如下(是字数有限制吗?代码原贴没有显示)
int score(String[] s) {
                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)!='+') {. more info on 1point3acres.com
                                num = Integer.valueOf(s[i]);.1point3acres缃
                                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;
                                        nums.push(tmp*2);
                                }

                        }
                        if (s[i].charAt(0) =='Z') {
                                total_score = total_score - (nums.isEmpty()?0:nums.pop());
                               
                        }
                        if (s[i].charAt(0) =='+') {
                                if (!nums.isEmpty()) {. 鍥磋鎴戜滑@1point 3 acres
                                        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);
                                               
                                        }. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
                                        else {. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
                                                total_score = total_score + tmp1;
                                                nums.push(tmp1);
                                                nums.push(tmp1);
                                               
                                        }. more info on 1point3acres.com
                                }               
                        }
. 鍥磋鎴戜滑@1point 3 acres                       
                }
               
                return total_score;
        }
回复 支持 反对

使用道具 举报

 楼主| uscgaopeng 发表于 2017-7-10 11:15:47 | 显示全部楼层
例子是这样的. Waral 鍗氬鏈夋洿澶氭枃绔,
输入["5", "-2", "4", "Z","X", 9, "+", "+"]
output: 27. visit 1point3acres.com for more.
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. 鍥磋鎴戜滑@1point 3 acres
+ : 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. visit 1point3acres.com for more.
compute total score.
代码如下(是字数有限制吗?代码原贴没有显示).鐣欏璁哄潧-涓浜-涓夊垎鍦
int score(String[] s) {

感觉加号这块有bug. 鍥磋鎴戜滑@1point 3 acres
如果stack时只有一个数的时候,你把它push了两遍 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
这样不对,接着来两个Z就要出错. from: 1point3acres.com/bbs

补充内容 (2017-7-10 13:00):
哦,一个Z就出错
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

dsxz 发表于 2017-7-10 23:55:47 | 显示全部楼层
uscgaopeng 发表于 2017-7-10 21:07
你说一个Z就出错,能讲一下细节吗? 因为我用["5", "-2", "4", "Z","X", 9, "+", "+"] 调试的,只有一个Z ...
. from: 1point3acres.com/bbs
试下 “5”, “+",  "Z"……不太确定,但是觉得你连着push两次是有问题的
回复 支持 反对

使用道具 举报

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

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-12-18 07:40

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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