23号荣耀笔试 全A
第一题老鹰捉小鸡 用list去处理,简单
第二题最靠后的最长降序,暴力求解,三个数组,
第一个list记录数据,
第二个arrLen[index]记录list中下标index数据对应的最长降序长度,
第三个arrIndex[index]记录list中下标index数据对应的最长降序长度前一个数据下标。然后两个循环,外循环从第二个数据到最后一个数据(i= 1; i < len; i++),内循环从i往前遍历(j = i - 1; j > -1; j--),判断条件list.get(i) < list.get(j) && arrLen[j] + 1 > arrLen[i] ,执行操作arrlen[i] = arrLen[j] + 1; arrIndex[i] = j;
最后的到最大长度在arrLen数组中,最大长度降序的索引记录在arrIndex中,遍历即可。(细节不赘述)
第三题 判断手中牌最大的权值。
数组arr记录各牌个数,长度为14,处理2~10、J\Q\k\A\大小王,映射到下标为0~13的arr数组中。
先判断arr[13] == 2 (大小王 权值5)
关键在五张连续牌会破坏 对子,三张,四张情况。
什么时候能取连续五张牌? 经判断 五张连续牌的个数,大于1的不超过两个,此时能取连续牌,并将对应牌个数减一。
剩下的一次遍历arr 加上对子、三张、四张的权重。
第二题最靠后的最长降序,暴力求解,三个数组,
第一个list记录数据,
第二个arrLen[index]记录list中下标index数据对应的最长降序长度,
第三个arrIndex[index]记录list中下标index数据对应的最长降序长度前一个数据下标。然后两个循环,外循环从第二个数据到最后一个数据(i= 1; i < len; i++),内循环从i往前遍历(j = i - 1; j > -1; j--),判断条件list.get(i) < list.get(j) && arrLen[j] + 1 > arrLen[i] ,执行操作arrlen[i] = arrLen[j] + 1; arrIndex[i] = j;
最后的到最大长度在arrLen数组中,最大长度降序的索引记录在arrIndex中,遍历即可。(细节不赘述)
第三题 判断手中牌最大的权值。
数组arr记录各牌个数,长度为14,处理2~10、J\Q\k\A\大小王,映射到下标为0~13的arr数组中。
先判断arr[13] == 2 (大小王 权值5)
关键在五张连续牌会破坏 对子,三张,四张情况。
什么时候能取连续五张牌? 经判断 五张连续牌的个数,大于1的不超过两个,此时能取连续牌,并将对应牌个数减一。
剩下的一次遍历arr 加上对子、三张、四张的权重。
全部评论
请问一下,第三题如果大于1的正好是两个,这个连续取牌不一定会分数更高吧,两个对子不就4分>3分了
送花
回复
分享
第二题应该可以简单点的吧。按顺序把读数字记录到数组A中,发现不满足递减了就开始往数组B中记录。之后每次发现不满足递减就把短的数组清空继续记录就行了。
送花
回复
分享
滴滴
官网直投
相关推荐
点赞 评论 收藏
转发
05-07 11:50
哈尔滨工业大学 建筑类 点赞 评论 收藏
转发
投递三一集团等公司7个岗位 >
点赞 评论 收藏
转发
点赞 评论 收藏
转发