魔霸游戏(起凡游戏)电面-拿到offer
先问几个算法题
①给n个长度相等的字符串,给一个k,abcd这样的字符串+k(k等于1的话)得到bcde,如果string1+k=string2的话就说它俩是好朋友,叫你输出一个长度为n的01串代表n个string有没有好朋友
做法是给每个string1和+k得到的string2做两个hash表,时间复杂度是O(n*n) ②在上题的基础上,不给k,即k可以是任意值。
做法是把每个string转换为a开头,判断有没有string相等,时间复杂度是O(n*n)
③给n段木头,要求cut成m个长度相等的小段,求最大长度。 做法是二分这个长度
④给n个数据,是1到n天股票的价格,可以买入卖出各一次,必须先买入再卖出。求最大收益。
做法是定义i为第i天,对每个i预处理一个i+1到n的最大值。 遍历一次求出最大差值 O(n)
⑤在上题的基础上把买入卖出次数改为两次,不能连续买入
做法是对每个i预处理一个i+1到n的最大值,对每个j预处理一个1到j-1的最小值,然后遍历一次求最大差值和。 O(n)
⑥n个用户(n<=1e6),每个用户有一个分数score(score<=100)。要求在线更新分数或查询rank
做法是开一个数组记录每个分数有多少人,更新O(1),查询O(100) ⑦score范围改为1e4 做法是用treap维护O(n*logn)
你有除了算法之外的项目经验吗? 除了课程设计没有做过项目 那你们课设都做了什么呢? 数据库做过图书管理系统 网页前端做过一系列网页