5323. 根据数字二进制下 1 的数目排序
solution:暴力
std:
class Solution {
public:
vector<int> sortByBits(vector<int>& arr) {
vector<int> v[30];
for(int i=0;i<arr.size();i++){
int k = 0,x = arr[i];
while(x){
int y = x%2;
k += y;
x /= 2;
}
v[k].push_back(arr[i]);
}
vector<int> ans;
for(int i=0;i<=29;i++){
if(v[i].size() > 0){
sort(v[i].begin(),v[i].end());
for(int j=0;j<v[i].size();j++){
ans.push_back(v[i][j]);
}
}
}
return ans;
}
};
5325. 包含所有三种字符的子字符串数目
solution:双指针法,维护一个滑动窗口
std:
class Solution {
public:
int numberOfSubstrings(string s) {
int j = 0,ans = 0,n = s.length();
map<char ,int> mp;
for(int i=0;i<s.length();i++){
mp[s[i]]++;
while(mp['a'] && mp['b'] && mp['c']){
ans += (n - i);
mp[s[j]]--;
j++;
}
}
return ans ;
}
};
5326. 有效的快递序列数目
solution:排列组合,比较简单
std:
class Solution {
public:
int countOrders(int n) {
long long mod =1e9 + 7;
long long k = 1,ans = 1;
for(long long i=2;i<=n;i++){
ans = ans*(i*2 - 1 + (i*2 - 1)*(i*2 - 2)/2);
ans %= mod;
}
return (int)ans ;
}
};