前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >21/4/4美团java开发笔试

21/4/4美团java开发笔试

作者头像
韩旭051
发布2021-04-14 15:01:13
4080
发布2021-04-14 15:01:13
举报
文章被收录于专栏:刷题笔记

21/4/4美团java开发笔试

五道编程题 分成两部分 第一部分4道 第二部分一道 状态不是很好 一直很懵 做题的时候 大概是 54.4 分吧 如果 再调试五分钟可能就 能64,4 不过也不咋咋地

在这里插入图片描述
在这里插入图片描述

A 0.18

不重复子串 没找到规律 骗了0.18

代码语言:javascript
复制
#include<iostream>
#include<vector>
using namespace std;
int main(){
	string s;
	cin>>s;
	vector<vector<int>>num(s.size(),vector<int>(26,0));
	for(int i=0;i<s.size();i++){
		for(int j=0;i>0&&j<26;j++){
			num[i][j]=num[i-1][j]; 
		}
		num[i][s[i]-'a']++;
	}
	
//	for(int i=0;i<s.size();i++){
//		for(int j=0;j<26;j++){
//			cout<<num[i][j]<<" ";
//		}cout<<endl;
//	}
	return 0;
} 

B 0.45

球体 按 经度 维度 切块数

时间到了 之后1分钟 才想起来 平面 过中心 切的 规律 脑子蒙蒙的 这也没想出来

代码语言:javascript
复制
#include<iostream>
using namespace std;

int jj[180];
int ww[360];
int main(){
	int n;
	cin>>n;
	long long jing=0,wei=0;
	int a,b;
	for(int i=0;i<n;i++){
		cin>>a>>b;
		if(a==0){
			ww[b]=1;
		}
		if(a==1){
			jj[b%180]=1;
		}
	}
	for(int i=0;i<180;i++){
		if(jj[i]==1)jing++;
	//	if(ww[i]==1)wei++;
	}
	for(int i=0;i<360;i++){
		if(ww[i]==1)wei++;
	//	if(ww[i]==1)wei++;
	}
	cout<<(jing+1)*(wei+1);
	return 0;
}

C 1

代码语言:javascript
复制
#include<iostream>
#include<math.h>
//#include<sstream>
using namespace std;
//stringstream sm;
string ss(int t){
	if(t==1){
		return "1";
	}
	string s;
	string s1 = to_string(1);
	//sm<<1;
	//sm>>s1;
	string s2 = to_string(t) ;
	//sm<<t;
	//sm>>s2; 
	//cout<<s2<<endl;
	for(int i=2;i<=sqrt(t);i++){
		if(t%i==0){
			s1=s1+to_string(i);
			//sm<<t/i; 
			//string tt = ""+t/i;
			string tt = to_string(t/i);
			//sm>>tt;
			//cout<<tt<<endl;
			if(i*i!=t){
				s2=tt+s2;
			//cout<<s2<<endl;
			}
			
		}
	}
	s= s1+s2;
	//cout<<s<<endl;
	return s;
}
int contain(string s1,string s2){
	for(int i=0;i<s1.size();i++){
		for(int j=0;j<s2.size();j++){
			if(s1[i]==s2[j]){
				cout<<j<<" "<<s2.size() <<endl;
				if(j==s2.size()-1){
					return 1;
				}
				continue;
			}else{
				break;
			}
		}
	}
	return 0;
}
int fun(int t,int k){
	string s = ss(t);
	string p = to_string(k);
	//sm<<k;
	//p = sm.str();
	//sm>>p;
	//cout<<s<<endl;
	string::size_type pos;
	pos = s.find(p);
	if(pos != s.npos){
		return 1;
	}else{
		return 0;
	}
	//return contain(s,p);
}
int main(){
	int n,k;
	cin>>n>>k;
	int count=0;
	for(int i=0;i<n;i++){
		int t;
		cin>>t;
		//cout<<fun(t,k)<<endl;
		count+=fun(t,k);
	}
	cout<<count;
	return 0;
}

D 0.09

给二维数组 从1蹦到k 算最小花费 写半天没过 样例

代码语言:javascript
复制
#include<iostream>
#include<vector>
#include<math.h>
using namespace std;
struct node{
	int x;
	int y;
	int val=0;
};
int main(){
	int n,k;
	cin>>n>>k;
	vector<vector<int>>nums(n,vector<int>(n));
	vector<bool>bl(k+1);
	vector<vector<node>>value(k+1,vector<node>() );
	int t;
	int count=0;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cin>>t;
			nums[i][j]=t;
			node nn;
			nn.x=i;
			nn.y=j;
			nn.val=0;
			value[t].push_back(nn);
			if(bl[t]==false){
				bl[t]=true;
				count++;
			}
		}
	}
		int ans = 99999;
	if(count!=k){
		cout<<"-1"<<endl;
		return 0;
	}else{
		for(int i=2;i<=k;i++){
			for(int j=0;j<value[i].size();j++){
				int min = 999999;
				node x = value[i][j];
				cout<<x.val<<" "<< i <<endl;
				for(int p=0;p<value[i-1].size();p++){
					node y = value[i-1][p];
					cout<<abs(x.x-y.x)<<" "<<abs(x.y-y.y)<<" "<<y.val<<endl;
					int sum = abs(x.x-y.x)+abs(x.y-y.y)+y.val;
					cout<<sum<<endl;
					if(sum<min){
						min = sum;
					}
				}
				 value[i][j].val = min;
			}
			if(i==k){
					for(int j=0;j<value[i].size();j++){
						if(value[i][j].val<ans){
							ans = value[i][j].val;
						}
					}
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}

E 1

发糖 必须从 0 开始连续拿 可以一个不拿 求最大值

代码语言:javascript
复制
#include<iostream>
using namespace std;
int main(){
	int a,b,t;
	cin>>a>>b;
	int suma=0;
	int sumb=0;
	int mmax=0,mmbx=0;
	for(int i=0;i<a;i++){
		cin>>t;
		suma+=t;
		if(suma>mmax){
			mmax=suma;
		}
//		if(suma<0){
//			suma=0;
//		}
	} 
	for(int i=0;i<b;i++){
		cin>>t;
		sumb+=t;
		if(sumb>mmbx){
			mmbx=sumb;
		}
//		if(sumb<0){
//			sumb=0;
//		}
	}
	if(mmax<0)mmax=0;
	if(mmbx<0)mmbx=0;
	cout<<mmax+mmbx<<endl;
    return 0;
}
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/04/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 21/4/4美团java开发笔试
    • A 0.18
      • B 0.45
        • C 1
          • D 0.09
            • E 1
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档