第一题
class Solution {
public:
int distinctAverages(vector<int>& nums) {
int n=nums.size();
int i=0,j=n-1;
sort(nums.begin(),nums.end());
int a,b;
set<double>s;
double t=-1.0;
while(i<n/2){
a=nums[i];//min
b=nums[j];//max
t=(a+b)*1.0/2;
s.insert(t);
i++;
j--;
}
int l=s.size();
return l;
}
};
第二题 简单dp——类似于爬楼梯
class Solution {
public:
int countGoodStrings(int low, int high, int zero, int one) {
const int MOD=1e9+7;
vector<int>f(high+1);
f[0]=1;
int ans=0;
for(int i=1;i<=high;i++){
if(i>=one)f[i]=(f[i]+f[i-one])%MOD;
if(i>=zero)f[i]=(f[i]+f[i-zero])%MOD;
if(i>=low)ans=(f[i]+ans)%MOD;
}
return ans;
}
};
第三题,第四题不会