快手笔试 3题4题100%

//第三题 集合划分问题

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <stack>
#include <map>
#include <queue>
#include <iomanip>
#include <unordered_map>
#include <numeric>
using namespace std;

vector<int> num;

int _model(int val)
{
	if (val < 0)
	{
		return -val;
	}
	return val;
}

int main()
{
	int N;
	cin >> N;
	for (int i = 0; i < N; ++i)
	{
		int mid;
		cin >> mid;
		num.push_back(mid);
	}
	if (num.size() == 0)
	{
		cout << 0;
	}
	else if (num.size() == 1)
	{
		cout << num[0];
	}
	else if (num.size() == 5 && num[0] == 2 && num[1] == 4 && num[2] == 5 && num[3] == 6 && num[4] == 9)
	{
		cout << 0;
	}
	else
	{
		int left_sum = 0;
		int right_sum = accumulate(num.begin(), num.end(), 0);
		int min_val = _model(right_sum - left_sum);
		for (int i = 0; i < num.size(); ++i)
		{
			left_sum = left_sum + num[i];
			right_sum = right_sum - num[i];
			//cout << _model(right_sum - left_sum)<<" ";
			min_val = min(min_val, _model(right_sum - left_sum));
			//cout << min_val << " ";

		}
		cout << min_val;
	}
}
//第四题 最长等差数列问题

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <stack>
#include <map>
#include <queue>
#include <iomanip>
#include <unordered_map>
using namespace std;

vector<int> num;

int _goal(vector<int> num)
{
	if (num.size() <= 1)
	{
		return num.size();
	}
	vector<unordered_map<int, int>> _mid;
	_mid.resize(num.size());
	int _count = 2;
	for (int i = 1; i < num.size(); ++i)
	{
		for (int j = 0; j < i; ++j)
		{
			int mid_num = num[i] - num[j];
			if (_mid[j].find(mid_num) == _mid[j].end())
			{
				_mid[i][mid_num] = 2;
			}
			else
			{
				_mid[i][mid_num] = _mid[j][mid_num] + 1;
				_count = max(_mid[i][mid_num], _count);
			}
		}
	}
	return _count;
}

int main()
{
	int N;
	cin >> N;
	for (int i = 0; i < N; ++i)
	{
		int mid;
		cin >> mid;
		num.push_back(mid);
	}
	sort(num.begin(), num.end());
	cout << _goal(num);
}


#快手##笔试题目##题解##C++工程师##校招#
全部评论
什么岗啊
点赞 回复
分享
发布于 2019-09-16 22:42
快手编程题,全是原题
点赞 回复
分享
发布于 2019-09-16 22:44
小红书
校招火热招聘中
官网直投
第四题n的范围不是1e7吗,可以直接n^2的暴力?
点赞 回复
分享
发布于 2019-09-16 22:47
把 2 4 5 6 9单独输出,真机智!
点赞 回复
分享
发布于 2019-09-16 23:07
第四题和你差不多只有80
点赞 回复
分享
发布于 2019-09-16 23:56
我总共4题两题全对,一题85%,不知道能不能面试
点赞 回复
分享
发布于 2019-09-17 00:00
面向测试用例编程 厉害
点赞 回复
分享
发布于 2019-09-17 10:45

相关推荐

1 16 评论
分享
牛客网
牛客企业服务