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 ;
    }
};