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

JD后端笔试c++

优质
小牛编辑
80浏览
2023-09-09

JD后端笔试c++

1、第一题,输入n和k,第二行输入n个数字,要求差不大于k的两个数字相乘,求能加起来的最大值。

第一题不是int为什么只有40%

#include<bits/stdc++.h>

using namespace std;

int main()
{
	int n,k;
	cin >> n >> k;
	vector<int> nums(n);
	for(int i=0; i<n; i++)
	{
		cin >> nums[i];
	}
	int i = n-2;
	int score = 0;
	sort(nums.begin(),nums.end());
	while(i>=0)
	{
		if(abs(nums[i]-nums[i+1])<=k)
		{
			score += nums[i]*nums[i+1];
			if(i-2>=0)
			{
				i=i-2;
			}else{
				break;
			}
		}else{
			i--;
		}
	}
	cout << score << endl;
	return 0;
}
/*
输入
6 2
1 1 1 1 4 5
输出 
22 
*/ 

2、第二题,动态规划 100%

3、一个数组,求里面所有子数组的和 20% 时间复杂度没时间优化了

 类似资料: