美团笔试4.9(菜鸡求助)

太惨了……一共五道题,后面三道题看都没看,一直在死磕第二题,因为感觉挺有可能做出来啊(可能本菜鸡把问题想的过于简单了?)然而一直0通过……最后只ac了第一道题😓凉凉凉凉凉凉……
有咩有大佬帮俺瞅瞅第二题代码呀,就是运动员赛跑问要发多少个奖牌那道题(可能错的很离谱,莫要笑俺😂 俺死磕了一个多小时觉得挺对的啊……vs2017上甚至输入都有问题……俺太菜了不知道因为啥……
题目大概是这样的,第一行有一个数组,代表运动员们的出发顺序(运动员用数字编号,如 [5,2,6,1,4,3] 代表5号第一个出发,2号第二个出发,6号第三个出发……),第二个有一个数组,代表运动员们的到达顺序。如果A运动员比B运动员先到达,且B是比A先出发的,那么给A颁发奖牌(B可以是比A先出发的任何一个运动员),计算并输出一共要颁发多少奖牌。
有咩有大佬帮俺瞅瞅错哪里了😥或者有什么好的思路或者通过了的代码给俺瞅瞅 感谢感谢感谢!(俺可能把问题想的过于简单了可能错的很离谱吧……
#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;

long n;
vector<long> a;
vector<long> b;
unordered_map<long, long> umap;

bool find(long i) {
	int tmp1 = umap[b[i]];
	for (int k = tmp1 - 1; k > 0; k--) {
		if (umap[b[k]] > i)
			return true;
	}
	return false;
}

int main() {
	a.clear();
	b.clear();
	long temp;
	cout << 5;
	for (int i = 0; i < n; i++) {
		cin >> temp;
		a.push_back(temp);
	}
	for (int i = 0; i < n; i++) {
		cin >> temp;
		b.push_back(temp);
	}
	long ans = 0;
	for (int i = 0; i < n; i++) {
		umap[a[i]] = i;
	}
	for (int i = 0; i < n; i++) {
		if (find(i)) ans += 1;
	}
	cout << ans;
	return 0;
}


#美团笔试##美团##笔试题目#
全部评论
import java.util.Scanner; public class Main {     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         int n = sc.nextInt();         int[] A = new int[n];         int[] B = new int[n+1];         for (int i = 0; i < n; i++) {             A[i] = sc.nextInt();         }         for (int i = 1; i <= n; i++) {             int x = sc.nextInt();             B[x] = i;   // 记录每一名选手的名次, 比如 B[2] = 1, 2号选手是第1名         }         int cnt = 0;    // 统计受表彰的选手的数量         // 从出发序列遍历每一名选手, 判断是否为受表彰的选手         for (int i = 1; i < n; i++) {   // 跳过第1位出发的选手, 因为他没有可超越的对手             int c = A[i];             for (int j = 0; j < i; j++) {   // 遍历先于 选手c 出发的选手                 int b = A[j];                 // 比较两人的名次: 选手c是否超越了选手b                 if (B[c] < B[b]) {                     cnt++;                     break;                 }             }         }         System.out.println(cnt);     } }
1 回复 分享
发布于 2020-04-09 21:49
暴力能通过吗
点赞 回复 分享
发布于 2020-04-14 18:12
&用hashmap 把到达的选手和时间存起来,然后出发的 从第二个开始的选手啊 遍历它前面的 如果它前面的角标大于
点赞 回复 分享
发布于 2020-04-09 22:10
天呐我理解错了!我把序号小的当成后面的 序号大的当成前面的了!反了!!!(当然只可能只是错误之一……
点赞 回复 分享
发布于 2020-04-09 21:51
设置一个值用来记录前面出发选手的最大排名,假如当前选手比前面选手排名小,显然有超过前面的选手,ans++ for(int i = 1;i <= n;i++) scanf("%d",&a[i]); for(int i = 1;i <= n;i++){ int x; scanf("%d",&x); b[x] = i; } for(int i = 1;i <= n;i++){ if (i == 1) now = b[a[i]]; else if (b[a[i]] > now) now = b[a[i]]; else ans++; }
点赞 回复 分享
发布于 2020-04-09 21:45

相关推荐

uu们,拒offer时hr很生气怎么办我哭死
爱睡觉的冰箱哥:人家回收你的offer,或者oc后没给你发offer的时候可不会愧疚你,所以你拒了也没必要愧疚他。
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

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