美团笔试9.23

第七批前端卷,第二道最长好子序列的长度有大佬写出来了么?(感觉类似力扣第300题求最长递增子序列长度)知道是动态规划,过了10%,后面想起来记录i-2下标映射应该是用数组来记录,改了一下结果到时间交卷了,也不知道改的对不对,有ac的老哥吗,想看看代码请教一下
全部评论
AC了const int MAXN = 1e4+5; int a[MAXN], dp[MAXN][MAXN]; int int main(int argc, char const *argv[]) { int n, ans = -1; cin >> n; for(int i = 0; i < n; i ++){ cin >> a[i]; for(int j = 0; j < MAXN; j ++){ dp[i][j] = 1; } } for(int i = 1; i < n; i ++){ for(int j = 0; j < i; j ++){ dp[i][a[j]] = dp[j][a[i]] + 1; ans = max(dp[i][a[j]], ans); } } cout << ans << endl; return 0; }
点赞 回复 分享
发布于 2023-09-24 00:13 河北
// 这是我的代码 #include <iostream> (30316)#include <vector> using namespace std; int main() { int n; cin >> n; if (n < 3) { cout << n; return 0; } vector<int> a(n); for(int i = 0; i < n; ++i) { cin >> a[i]; } int res = 2; vector<int> dp(n); // vector<int> idx(n); 应该把长度相同的前一个下标记录在数组里 unordered_map<int, vector<int>> m; dp[0] = 1, dp[1] = 2; m[0] = {-1}, m[1] = {0}; for (int i = 2; i < n; ++i) { for (int j = 0; j < i; ++j) { for (int k = 0; k < m[j].size(); ++k) { if (m[j][k] == -1 || a[m[j][k]] == a[i]) { if (dp[j] + 1 >= dp[i]) { dp[i] = dp[j] + 1; m[i].push_back(j); } } } } res = max(res, dp[i]); } cout << res; return 0; }
点赞 回复 分享
发布于 2023-09-23 12:32 广西

相关推荐

不愿透露姓名的神秘牛友
07-07 13:35
虽然不怎么光彩,经过这件事,可能我真的要去认同“面试八股文早该淘汰!不会用AI作弊的程序员=新时代文盲!”这句话了
HellowordX:Ai的出现是解放劳动力的,不是用来破坏公平竞争环境的,这样下去,轻则取消所有线上面试,严重了会影响整个行业对所有人产生影响,企业会拉高入职考核各种离谱考核会层出不穷
你找工作的时候用AI吗?
点赞 评论 收藏
分享
程序员小白条:找的太晚,别人都是大三实习,然后大四秋招春招的,你大四下了才去实习,晚1年
点赞 评论 收藏
分享
06-05 19:46
已编辑
武汉大学 后端
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

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