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% 时间复杂度没时间优化了
查看8道真题和解析