感谢lz,这几天见到的最全的面经了。 对于文中几道编程题想交流下思路。 先手最高得分是O(n*m)时间复杂度的dp,如果超时的话暂时没想到怎么改良。 字符串是最长递增子序列问题,也是dp问题,代码和思路网上可以找到。 战斗力排名是n个数中寻找前k大数的问题,这个问题用堆解决比较好,前500人构造一个小根堆(如果战斗力会降低的话,在小根堆之外,后9500人需要构造一个大根堆),这样就获得了第500名的战斗力(小根堆堆顶)和第501名(大根堆堆顶)的战斗力,后9500人里有人战斗力提升的话,和小根堆堆顶的第500名比较,比500名高就替换掉小根堆的堆顶元素。前500人里有战斗力降低,降到比第501名低的话,把大根堆堆顶元素加入到小根堆里。之后前500人的堆每次有变动进行插入排序就好。
点赞 3

相关推荐

牛客网
牛客企业服务