【网易互娱】推荐算法笔试 100 100 100 75

半小时三道题,然后最后一题卡着,emmmmm
第一题最大公约数最小公倍数,先求最大公约t, 然后a / t * b就是最小公倍,注意usigned long long不然会溢出
第二题有序聊表去重(重复保留2),比较简单,看代码吧
第三题其实就是个0-1背包问题,注意输出格式就行
第四题没什么比较好的办法,暴力剪枝过75%,试过dp但是O(n^4)也有问题,等一个大佬的解答
楼下放代码
#笔试题目##网易互娱##题解#
全部评论
同3.75。第四题思路咱俩一样,也是75。另外如果你的k最大已经不超过当前的res的话,就可以不去遍历了。
点赞 回复 分享
发布于 2019-09-21 00:49
第四题我暴力只过了百分之50.。。
点赞 回复 分享
发布于 2019-09-20 23:44
前端也是这套题。。。
点赞 回复 分享
发布于 2019-09-20 21:26
第四题好像是什么竞赛题原题 URAL 1486
点赞 回复 分享
发布于 2019-09-20 19:46
所以第二题是不需要输入的么。。。
点赞 回复 分享
发布于 2019-09-20 19:43
第三题同背包,超时😂
点赞 回复 分享
发布于 2019-09-20 19:41
第四题我二分答案,感觉应该没错,不知道为什么只能过65%
点赞 回复 分享
发布于 2019-09-20 19:39
第三题我用背包没过😢
点赞 回复 分享
发布于 2019-09-20 19:38
第四题: int helper(int i, int j, int x, int y, int k, vector<vector<char>> &graph) {     for (int a = 0; a < k; a++) {         for (int b = 0; b < k; b++) {             if (graph[i + a][j + b] != graph[x + a][y + b]) {                 k = min(k, b);             }         }     }     return k; } int main() {     int n, m;     cin >> n >> m;     vector<vector<char>> graph(n, vector<char>(m));     vector<vector<pair<int, int>>> hash(26);     for (int i = 0; i < n; i++) {         for (int j = 0; j < m; j++) {             cin >> graph[i][j];             hash[graph[i][j] - 'a'].push_back(make_pair(i, j));         }     }     int i, j, x, y, k, temp;     int res = 0;     vector<int> re(4);     for (int t = 0; t < 26; t++) {         for (int a = 0; a < hash[t].size(); a++) {             for (int b = a + 1; b < hash[t].size(); b++) {                 i = hash[t][a].first;                 j = hash[t][a].second;                 x = hash[t][b].first;                 y = hash[t][b].second;                 k = min(min(n - i, m - j), min(n - x, m - y));                 temp = helper(i, j, x, y, k, graph);                 if (temp > res) {                     res = temp;                     re[0] = i;                     re[1] = j;                     re[2] = x;                     re[3] = y;                 }             }         }     }     if (res != 0) {         cout << res << endl;         cout << re[0] + 1 << ' ' << re[1] + 1 << endl;         cout << re[2] + 1 << ' ' << re[3] + 1 << endl;     }     else         cout << 0 << endl;     system("pause");     return 0; }
点赞 回复 分享
发布于 2019-09-20 19:35
第三题: int main() {     int n, total;     cin >> n >> total;     vector<int> w(total);     vector<float> price(total);     char temp;     float a;     for (int i = 0; i < total; i++) {         cin >> w[i] >> temp >> a;         price[i] = w[i] * a;     }     vector<float> dp(n + 1, 0);     float res = 0;     for (int i = 0; i < total; i++) {         for (int j = n; j > 0 && j >= w[i]; j--) {             dp[j] = max(dp[j], dp[j - w[i]] + price[i]);             res = max(res, dp[j]);         }     }     int k = res;     int t = (res - k) * 10000;     cout << to_string(k) + '.' + to_string(t) << endl;     system("pause");     return 0; }
点赞 回复 分享
发布于 2019-09-20 19:34
第二题: void removeDuplicates(ListNode *head) {     // 在这里编写代码     ListNode *p = head;     while(p != NULL && p->next != NULL){         ListNode *p1 = p->next;         if(p->val != p1->val){             p1 = p1->next;             p = p->next;             continue;         }         while(p1->next != NULL && p1->next->val == p->val)             p1 = p1->next;         p->next = p1;         p = p->next;         p1 = p1->next;     } }
点赞 回复 分享
发布于 2019-09-20 19:34
第一题: unsigned long long gcd(unsigned long long x, unsigned long long y) {     if (x < y)         swap(x, y);     if (x % y == 0)         return y;     return gcd(y, x % y); } int main() {     unsigned long long x, y;     cin >> x >> y;     unsigned long long a = gcd(x, y);     cout << a << ' ' << x / a * y << endl;     system("pause");     return 0; }
点赞 回复 分享
发布于 2019-09-20 19:34

相关推荐

上周组里招人,我面了六个候选人,回来跟同事吃饭的时候聊起一个让我挺感慨的现象。前三个候选人,算法题写得都不错。第一道二分查找,五分钟之内给出解法,边界条件也处理得干净。第二道动态规划,状态转移方程写对了,空间复杂度也优化了一版。我翻他们的简历,力扣刷题量都在300以上。后三个呢,就有点参差不齐了。有的边界条件没处理好,有的直接说这道题没刷过能不能换个思路讲讲。其中有一个女生,我印象特别深——她拿到题之后没有马上写,而是先问我:“面试官,我能先跟你确认一下我对题目的理解吗?”然后她把自己的思路讲了一遍,虽然最后代码写得不是最优解,但整个沟通过程非常顺畅。这个女生的代码不是最优的,但当我问她“如果这里是线上环境,你会怎么设计’的时候,她给我讲了一套完整的方案——异常怎么处理、日志怎么打、怎么平滑发布。她对这是之前在实习的时候踩过的坑。”我在想LeetCode到底在筛选什么?我自己的经历可能有点代表性。我当年校招的时候,也是刷了三百多道题才敢去面试。那时候大家都刷,你不刷就过不了笔试关。后来工作了,前三年基本没再打开过力扣。真正干活的时候,没人让你写反转链表,也没人让你手撕红黑树。更多的是:这个接口为什么慢了、那个服务为什么OOM了、线上数据对不上了得排查一下。所以后来我当面试官,慢慢调整了自己的评判标准。算法题我还会出,但目的变了。我出算法题,不是想看你能不能背出最优解。而是想看你拿到一个陌生问题的时候,是怎么思考的。你会先理清题意吗?你会主动问边界条件吗?你想不出来的时候会怎么办?你写出来的代码,变量命名乱不乱、结构清不清楚?这些才是工作中真正用得到的能力。LeetCode是一个工具,不是目的。它帮你熟悉数据结构和常见算法思路,这没问题。但如果你刷了三百道题,却说不清楚自己的项目解决了什么问题、遇到了什么困难、你是怎么解决的,那这三百道题可能真的白刷了。所以还要不要刷LeetCode?要刷,但别只刷题。刷题的时候,多问自己几个为什么:为什么用这个数据结构?为什么这个解法比那个好?如果换个条件,解法还成立吗?把刷题当成锻炼思维的方式,而不是背答案的任务。毕竟面试官想看到的,从来不是一台背题机器,而是一个能解决问题的人。
国企上岸了的向宇同桌...:最害怕答非所问了,但是频繁反问确定意思又害怕面试官觉得我笨
AI时代还有必要刷lee...
点赞 评论 收藏
分享
评论
1
20
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务