美团2025秋招第五次笔试(技术方向)
选择题十道题,一道题三分,一共三十分。挺多大模型相关的东西,训练模型这一块完全不熟悉,有一道计网的题,求子网的,这个好歹是科班学过,还有一个用栈求表达式的值。
编程题三道题,前两道20分,后一道30分,一共70分。
第一道题,寻找 *dp格式的字符串有多少个,要求不能重复,就直接放到集合里自动去重,dp前面的字符不能有d或者p。
第二道题,给出数组a,任意排序,让数组b的和最大,数组b第i个数是数组a从0到i没有出现的最小非负整数,样例给的数组a里面没有重复元素,很朴素的一个想法就是数组a从小到大排序,这样数组b会递增,而且和最大,交了一下发现部分正确。没有考虑有重复元素的情况,有重复元素,就把所有的重复元素拼接到后面,因为不影响后面的值了,因为前面已经有过这些数字了,这样就过了。
第三题,给一个树,节点的值是如果是叶子节点就是自己本身的值,如果有子节点就是和子节点的值异或取最大。给出123三个操作,1是变换值,2是求x到y最大的值,3是求以x为根的值。写了一堆,样例通过,但是百分之0。
#发面经攒人品##我的秋招日记##笔试##秋招白月光##牛客AI配图神器#
编程题三道题,前两道20分,后一道30分,一共70分。
第一道题,寻找 *dp格式的字符串有多少个,要求不能重复,就直接放到集合里自动去重,dp前面的字符不能有d或者p。
第二道题,给出数组a,任意排序,让数组b的和最大,数组b第i个数是数组a从0到i没有出现的最小非负整数,样例给的数组a里面没有重复元素,很朴素的一个想法就是数组a从小到大排序,这样数组b会递增,而且和最大,交了一下发现部分正确。没有考虑有重复元素的情况,有重复元素,就把所有的重复元素拼接到后面,因为不影响后面的值了,因为前面已经有过这些数字了,这样就过了。
第三题,给一个树,节点的值是如果是叶子节点就是自己本身的值,如果有子节点就是和子节点的值异或取最大。给出123三个操作,1是变换值,2是求x到y最大的值,3是求以x为根的值。写了一堆,样例通过,但是百分之0。
#发面经攒人品##我的秋招日记##笔试##秋招白月光##牛客AI配图神器#
全部评论
第三题难
第二题代码如下:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+10;
int n,a[N];
vector<int>b,c;
map<int,int>mp;
ll sum;
int main() {
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
if(mp[a[i]]>0){
c.push_back(a[i]);
}
else{
b.push_back(a[i]);
}
mp[a[i]]++;
}
sort(b.begin(),b.end());
for(int i=0;i<n;i++){
if(i<b.size())a[i]=b[i];
else a[i]=c[i-b.size()];
}
int mx=0;
for(int i=0;i<n;i++){
if(a[i]==mx){
mx=a[i]+1;
}
sum+=mx;
}
cout<<sum<<endl;
for(int i=0;i<n;i++){
if(i)cout<<" ";
cout<<a[i];
}
}
第一题代码如下:
#include <bits/stdc++.h>
using namespace std;
set<string>st;
string s;
int main() {
cin>>s;
int t=0;
for(int i=0;i<s.size()-1;i++){
if(s[i]=='d'&&s[i+1]=='p'){
string str=s.substr(t,i-t);
t=i+2;
if(str.find('d')==-1&&str.find('p')==-1){
st.insert(str);
}
}
}
cout<<st.size();
return 0;
}
相关推荐
09-07 23:05
门头沟学院 Java 点赞 评论 收藏
分享