同上篇小红的口罩一样,用判断代替排序降低时间复杂度
题目链接:4.次数差 - 蓝桥云课 (lanqiao.cn)
1.时间复杂度(60ms左右)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int>nums;
int main()
{
string s;
int sign=1;
cin>>s;
int l=s.size();
sort(s.begin(),s.end());
for(int i=0; i<l; i++)
{
if(s[i]==s[i+1])
{
sign++;
}
else
{
nums.push_back(sign);
sign=1;
}
}
sort(nums.begin(),nums.end());
cout<<nums[nums.size()-1]-nums[0];
return 0;
}
2.时间复杂度(2ms左右)
#include<iostream>
#include<algorithm>
using namespace std;
vector<int>nums;
int main()
{
string s;
int sign=1,min1=1010,max1=0;
cin>>s;
int l=s.size();
sort(s.begin(),s.end());
for(int i=0; i<l; i++)
{
if(s[i]==s[i+1])
{
sign++;
}
else
{
min1=min(min1,sign);
max1=max(max1,sign);
sign=1;
}
}
cout<<max1-min1<<endl;
return 0;
}