当前位置: 首页 > 面试经验 >

美团算法笔试8.10

优质
小牛编辑
68浏览
2024-08-10

美团算法笔试8.10

第一题
//偶数因子
#include<bits/stdc++.h>
using namespace std;
bool check(int x){
if(x % 2 == 0){
return true;
}else{
return false;
}
}
int main(){
int x ;
while(cin >> x){
if(check(x) == true){
cout<<&quot;YES&quot;<<endl;
}else{
cout<<&quot;NO&quot;<<endl;
}
}
return 0;
}
第二题
//字符串密码
#include<bits/stdc++.h>
using namespace std;
int check1(vector<int>&amp; res , int x){
int count = 0 ;
for(int i = 0 ; i < res.size() ; i++){
if(res[i] < x){
count++;
}
}
return count ;
}
int check2(vector<int>&amp; res , int x){
int count = 0 ;
for(int i = 0 ; i < res.size() ; i++){
if(res[i] <= x){
count++;
}
}
return count ;
}
int main(){
int n ;
cin >> n;
string s ;
cin >> s;
unordered_set<string>set;
vector<int>res;
while(n){
string ss ;
cin >> ss ;
if(set.find(ss) == set.end()){
set.insert(ss);
res.push_back(ss.size());
}
n--;
}
cout <<check1(res,s.size()) + 1 << &quot; &quot; << check2(res , s.size())<<endl;
}
第三题
// 删数字或删整个数组
#include<bits/stdc++.h>
using namespace std ;
int check(vector<int>&amp; arr ,int x){
unordered_set<int>set;
for(int i = x ; i < arr.size() ; i++){
set.insert(arr[i]);
}
for(int i = 0 ; i <= set.size() ; i++){
if(set.find(i) == set.end()){
return i;
}
}
return 0;
}
int main(){
int m ;
cin >> m;
while(m--){
int n , k , x ;
cin >> n >> k >> x;
vector<int>arr(n);
for(int i = 0 ; i < n ; i++){
cin >> arr[i];
}
int minSize = INT_MAX;
int sum = 0 ;
for(int i = 0 ; i <= arr.size() ; i++){
sum = check(arr,i) * k + i * x;
minSize = min(sum , minSize);
}
cout << minSize << endl;
}
return 0;
}
第四题不记得测试用例了 第五题基本没看
 类似资料: