网易互娱二面筋
网络互娱二面简记,对面试官对两道coding题的见解并不是很满意。嘤嘤嘤。。
笔试题
有一个用户id数组 array_id[M] , 需要写一个函数,需要从M个用户中抽取N个中奖用户,写一个接口。提供rand(M) 返回 0 ~ M-1
vector<int> get_n(int array_id[],int M,int N){ vector<int> res; for(int i(0);i<M;i++){ if(rand(M-i)<N){ res.push_back(array_id[i]); N--; } } return res; }
结果被面试官吐槽绕来绕去看不懂,求问各种大佬,相较于解法 csdn百度 到底谁的逻辑更简明。
面试题
给定一个 N*M 地图,每个格子会发生一场战斗,该格子上标识的数为玩家hp变化的值,玩家需要从(0,0)出发,到右下角。当hp值<=0时 玩家死亡,求玩家出发时所需要的最小hp值。
int find(vector<vector<int> >mymap){ vector<vector<int> >dp1(mymap.size(),vector<int>(mymap[0].size())); vector<vector<int> >dp2(mymap.size(),vector<int>(mymap[0].size())); for(int i(0);i<mymap.size();i++){ for(int j(0);j<mymap[0].size();j++){ dp1[i][j]=mymap[i][j]+min(i==0?0:dp[i-1][j],j==0?dp[i][j-1]); } } for(int i(0);i<mymap.size();i++){ for(int j(0);j<mymap[0].size();j++){ dp1[i][j]=mymap[i][j]+min(i==0?0:dp1[i-1][j],j==0?dp1[i][j-1]); } } // 求出到达(i,j)的最大剩余hp for(int i(0);i<mymap.size();i++){ for(int j(0);j<mymap[0].size();j++){ dp2[i][j]=min(dp1[i][j],max(i==0?-1e8:dp1[i-1][j],j==-1e8?dp1[i][j-1])); } } // 求出到达(i,j)的最大剩余hp的最小值 if(dp2[mymap.size()-1][mymap[0].size()-1]>0)return 1; else return 1-dp2[mymap.size()-1][mymap[0].size()-1]; }
这个我就更懵逼了,两遍dp可以合并成一个for循环,不开心
总结
面试体验并不是特别愉快~ 面试官对计算机基础其实要求还是挺高,其他的就看。。仁者见仁智者见智了。
#网易互娱##笔试题目##面试题目#