牛客网刷题-华为16校招机试 总结

第一题:一群学生按id排列,老师想知道任选两个id,两个id之间(包含这两个id)的学生中分数最高的是多少,请编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。
总结:

  • 好久没练,手有点生,好一会才手、脑才跟上来。 针对学生信息需要进行查询和修改,且学生按id排列,因此想到使用数组。
    同时学生的数量需要输入数值确认,因此不能使用固定大小的数组去存储,确认数据结构为ArrayList,链式数组,可以直接根据id查询更新数组数据。
    这题我踩了两个坑,一个是输入的两个查询最高分的id不一定是前小后大,需要注意。一个是两个id的交换只发生在查询阶段。

第二题:开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。最终输出“文件名 行号 次数”,要求按次数从大到小,次数一样按录入顺序。
总结:

  • 这个只有一个测试用例,最开始没理解到底想让做什么。
    输出的文件名有特殊要求,因此涉及到字符串的部分函数,包括split(),substring()等;注意使用“\”作为分隔符的时候要写成“\\”。
    遍历错误记录,错误记录数量不确定,要统计每种错误记录的次数,因此最开始想到的数据结构是HashMap,遍历存入,排序输出。
    结果不对,忽略了HashMap存入的时候就不可能保持录入的顺序,查询资料之后发现这种情况应该使用LinkedHashMap,更改了数据结构,通过。
    重点记一下HashMap的排序写法。

第三题:扑克牌大小,牌型只有个子,对子,顺子(连续5张),三个,炸弹(四个)和对王,比较两手牌的大小。
总结:

  • 这题很好理解,无非是对王最大,没对王就炸弹最大,其他情况只能手牌数量一样才可比,不一样就无法比较。考察的应该是能不能把所有情况都考虑到。
    最开始考虑用字符串长度作为初始判断条件,单独判断了大小王,却忽略了“10”的字符串长度是2。失败。后边发现用字符串数组更方便好理解。
    首先用“-”分割两副手牌为两个字符串,后边输出可以直接使用,不要再进行组合。再用“
    ”分割单个手牌,因为手牌都是排好序的,因此除了对王和炸弹之外,其他可比较的情况只需要比较手牌第一张即可。
    还有一个问题是怎么比较单个手牌的大小,因为存在2比1大,K比Q大的情况,最后使用了HashMap来存储大小关系,需要比较的时候直接调用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值