一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投,内推多家公司面试
游戏初创公司
招聘工程师、Designer和游戏策划
游戏初创公司DreamCraft招聘工程师、UIUX Designer和游戏策划
把贵司招聘信息放这里
查看: 1504|回复: 8
收起左侧

亚麻,丢棒球,求拍砖

[复制链接] |试试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)!='+') {
                                num = Integer.valueOf(s[i]);
                                total_score = total_score + num;. 1point 3acres 璁哄潧
                                nums.push(num);                               
                        }
                        if (s[i].charAt(0) =='X') {
                                if (!nums.isEmpty()) {
                                        int tmp = nums.pop();
                                        total_score = total_score + tmp*2;. from: 1point3acres.com/bbs
                                        nums.push(tmp*2);
                                }
.1point3acres缃
                        }
                        if (s[i].charAt(0) =='Z') {
                                total_score = total_score - (nums.isEmpty()?0:nums.pop());
                               
                        }. 鍥磋鎴戜滑@1point 3 acres
                        if (s[i].charAt(0) =='+') {
                                if (!nums.isEmpty()) {
                                        int tmp1 = nums.pop();        . from: 1point3acres.com/bbs
                                        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);.鐣欏璁哄潧-涓浜-涓夊垎鍦
                                               
                                        }
                                }               
                        }
                       
                }
               
                return total_score;. from: 1point3acres.com/bbs
        }
回复 支持 反对

使用道具 举报

 楼主| 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. Waral 鍗氬鏈夋洿澶氭枃绔,
+ : 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就要出错. 1point 3acres 璁哄潧

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

使用道具 举报

wans90 发表于 2017-7-10 16:55:36 | 显示全部楼层
dsxz 发表于 2017-7-10 12:59
感觉加号这块有bug
如果stack时只有一个数的时候,你把它push了两遍.鏈枃鍘熷垱鑷1point3acres璁哄潧
这样不对,接着来两个Z就要出错
. visit 1point3acres.com for more.
沒有吧,第一個push是把pop出來的push回去,第二個push是把剛剛加進去totalscore的push進去
回复 支持 反对

使用道具 举报

 楼主| uscgaopeng 发表于 2017-7-10 21:07:55 | 显示全部楼层
dsxz 发表于 2017-7-10 12:59. 1point 3acres 璁哄潧
感觉加号这块有bug.1point3acres缃
如果stack时只有一个数的时候,你把它push了两遍. 鍥磋鎴戜滑@1point 3 acres
这样不对,接着来两个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, 2018-2-18 09:29

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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