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 加上对子、三张、四张的权重。
全部评论
请问一下,第三题如果大于1的正好是两个,这个连续取牌不一定会分数更高吧,两个对子不就4分>3分了
点赞
送花
回复
分享
发布于 2023-09-23 20:18 浙江
第二题应该可以简单点的吧。按顺序把读数字记录到数组A中,发现不满足递减了就开始往数组B中记录。之后每次发现不满足递减就把短的数组清空继续记录就行了。
点赞
送花
回复
分享
发布于 2023-09-23 20:56 江苏
滴滴
校招火热招聘中
官网直投

相关推荐

1 2 评论
分享
牛客网
牛客企业服务