注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
3月7日网上海投的IXL SDE New Grad的职位,10号收到了OA。发现地里IXL Learning的面经不多,来分享下
HackerRank 90分钟4道题。和这位老哥的题目是一样的
1. 玩牌找赢家: Andrea和Maria这两个人玩扑克牌,每人手上都有一叠面朝下的牌。规则是这样的,它们2个人同时翻开第一张,然后Andrea 加上自己牌的分数,减去Maria牌的分数;Maria加上自己牌分数,减去Andrea的分数。然后两人各自再丢弃顶上的一张牌,然后继续翻牌(即每2张比一次)。例如A玩家的牌为(代表从上到下) [3,5,1], M的牌为 [4,6,2]. 那么它们一开始比较的牌为 A:3 M:5。 所以A得-2分,M得2分。 然后它们各自丢弃一张牌(5和6),继续比较下一张,此时A为1, M为2,所以A得-1分,M得1分。 直度为 1-2000(包含), 每个数字的大小是1-3000(包含)我的做法:创建一个5000长度的数组,用来记录每个数字的出现次数,然后初始化一个重复数字个数 = 0, 再从低到高扫描一遍,遇到对应count > 1的就记录到重复数字个数中,遇到count = 0 的就放一个重复数字到这个位置。最后扫描扫描一遍count不为0的,将数字加起来。时间复杂度 O(N) 用来扫描数字,再遍历5000长度的数字, 由于长度不超过3000,所以时间复杂度为O(N) 或者说 O(3000) -> O(1)
|