给定字符串A,A是由逗号分割的数字串,A可以解析成整数数组B。每次操作可以选择任意B[i],并将其递增1.返回使得B中的每个值都是唯一的最小操作次数。
输入描述:
输入每一行字符串,用逗号分隔
如
1,2,3,4,5
输出描述:
输出一位整数
0
#include<cstdio>
#include<cstring>
#include<string>
#include<vector>
#include<unordered_set>
#include<algorithm>
using namespace std;
const int N=4e4+5;
char s[N];
int main()
{
vector<int> vec;
unordered_set<int> S;
scanf("%s",s);
int len=strlen(s);
for(int i=0;i<len;++i)
{
if(s[i]==',')
continue;
string num;
while(i<len&&s[i]!=',')
num+=s[i++];
--i;
int x;
sscanf(num.c_str(),"%d",&x);
S.insert(x);
vec.push_back(x);
}
sort(vec.begin(),vec.end());
int flag=vec[0]+1,ans=0;
while(S.find(flag)!=S.end())
++flag;
for(int i=1;i<vec.size();++i)
{
if(vec[i]==vec[i-1])
{
while(flag<vec[i])
{
flag = vec[i];
while(S.find(flag)!=S.end())
++flag;
}
ans+=flag-vec[i];
++flag;
}
}
printf("%d\n",ans);
return 0;
}
标签:界校,int,flag,while,++,微博,2020,vec,include From: https://blog.51cto.com/u_13121994/5798364