美团笔试9.13算法岗

第一题:最小矩阵
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
bool fun(vector<vector<int>>a, vector<vector<int>>b)
{
	for (int i = 0; i < a.size(); i++)
	{
		for (int j = 0; j < a[0].size(); j++)
		{
			if (a[i][j] != b[i][j])
			{
				for (int k = 0; k <a.size() ; k++)
				{
					for (int z = 0; z < a[0].size(); z++)
					{
						if (a[k][z] != b[a.size()-1-k][z])
						{
							return false;
						}
					}
				}
				return true;
			}
		}
	}
	return true;
}
int main()
{
	int n, m;
	cin >> n >> m;
	vector<vector<int>>nums;
	for (int i = 0; i < n; i++)
	{
		vector<int> tem(m, 0);
		for (int j = 0; j < m; j++)
		{
			cin >> tem[j];
		}
		nums.push_back(tem);

	}
	
	

	vector<vector<int>>tem = nums;
	int top = 0, butt = tem.size();
	
	while (top <= butt)
	{
		vector<vector<int>>a, b;
		int mid = (top + butt) / 2;
		a.assign(tem.begin(), tem.begin() + mid);
		b.assign(tem.begin() + mid, tem.end());
		if(fun(a, b))
		{
			vector<vector<int>>tem = a;
			butt = mid;

		}
		else
		{
			for (int i = 0; i < butt; i++)
			{
				for (int j = 0; j < m; j++)
				{
					cout << nums[i][j] << " ";
				}
				cout << endl;
			}
			break;
		}

	}



	return 0;
}
第二题
#include<iostream>
#include<vector>
#include<string>

#include<algorithm>
using namespace std;

int main()
{
	int n, m,k;
	cin >> n >> m>>k;
	vector<int>nums(n, 0);
	for (int j = 0; j < n; j++)
		{
			cin >> nums[j];
		}
	vector<int>tem;
	int res=0;
	for (int i = 0; i < n; i++)
		{
		if (nums[i]>=k)
		{
			if (tem.size()== m)
			{
				tem.erase(tem.begin());
			}
			tem.push_back(nums[i]);

		}
		else
		{
			tem.clear();

		}
		if (tem.size() == m)
		{
			res++;
		}


		}
	cout << res<<endl;

	
	


	return 0;
}



#笔试题目##美团#
全部评论
楼主是两道都AC了吧?
点赞 回复 分享
发布于 2020-09-13 19:16

相关推荐

09-23 16:24
河海大学 C++
点赞 评论 收藏
分享
1 5 评论
分享
牛客网
牛客企业服务