网易互娱:技术一二面
二面:
时长:一个小时
算法题:
一.给定一个只包含1,0,2,4的字符串,求长度为4的子序列中,为“1024”的有多少种组合方式,每个字符可以重复使用
要求,下标的关系满足 pos[1] < pos[0] < pos[2] < pos[4]
例1:
1100244 有八种组合方式 下标为[0,2,3,4] 或者[1,2,3,4]
0124 有0种组合方式 ,因为不满足 pos[1] < pos[0] < pos[2] < pos[4]
解法:dp
class Solution { public: int func(string s) { int one = 0, zero = 0, two = 0, four = 0; int res = 0; for (char i : s) { if (i == '1') { ++one; } else if (i == '0') { zero += one; } else if (i == '2') { two += zero; } else { res += two; } } return res; } };
二.要求你完成一个是报警器
class Alarm {
public:
void put(int delay, int id);
void update(); //轮训不用自己写
//给定的接口
int Now();返回当前的时间
}
解法:最小堆
算法:
给定一个乱序时间数组,元素格式为:YY:MM:DD:HH:MM:SS
查找范围内的所有时间
例如:{{2022:01:01:00:00:00},{2021:12:24:23:56:59}}
请从中找出2020年到2022年所有的日期
一面:
写一个类的构造函数,析构函数,拷贝构造,重载运算=函数
为什么你的析构函数为空,什么情景下不能为空?
写一个迭代器指针销毁的过程