今天做了一道某大讯飞的题目,虽然考试时候没完全写出来,但是考完还是把它写完了。写程序+调试bug花费2h,属实菜鸡!
以下是题目原型:
已知一个长度为n的正整数数组number,下标从0到n-1,最多可以操作k次,每一次操作,挑选任意一个下标i(0<=i<=n),将numberi重新取值,假设此次操作前numberi值为ai,操作后为b,只要满足|a-b|<=2,且b为正整数,那么操作成功,否则操作失败,numberi的取值重新变为a.
同一个下标可以被重复选择,只要操作成功,那么取值就会不断被更新。
而只有数值大小恰好等于指标target时,才能称之为达标,那么,在操作过程中,成功达标的数量最多可能为多少?
示例:
输入:1,6,{9,3}
输出:0
输入:1,6,{6,6,6}
输出:3
输入:4,9,{10,6,9,1,12}
输出:3
下面给出程序:
#include<unordered_map>
#include<vector>
using namespace std;
int quality(int k, int target, vector<int>& num)
{
unordered_map<int, int> m;
int trans = 0;
int