classSolution{public:intcountTime(string s){
vector<string> vec;for(int i =0; i <24; i ++){for(int j =0; j <60; j ++){
string t ="";if(i <10) t +="0";
t +=to_string(i)+":";if(j <10) t +="0";
t +=to_string(j);
vec.push_back(t);}}int res =0;for(auto t : vec){bool f =true;for(int i =0; i <5; i ++)if(s[i]!='?'&& s[i]!= t[i])
f =false;if(f) res ++;}return res;}};
2 二的幂数组中查询范围内的乘积
constint mod =1e9+7;classSolution{public:
vector<int>productQueries(int n, vector<vector<int>>& q){
vector<int>power, res,s(100010,1);for(int i =0; i <=30; i ++){if((n >> i)&1){int t =2<< i;
power.push_back(t /2);}}for(auto a : q){int l = a[0], r = a[1];longlong t =1;for(int i = l; i <= r; i ++) t =(longlong)t * power[i]% mod;
res.push_back(t);}return res;}};
3 最小化数组中的最大值
classSolution{public:
vector<longlong> vec1;int n;boolcheck(longlong x){
vector<longlong> vec = vec1;for(int i = n -1; i >=1; i --){if(vec[i]> x){longlong t = vec[i]- x;
vec[i]= x;
vec[i -1]+= t;}}return vec[0]> x;}intminimizeArrayValue(vector<int>& nums){
n = nums.size();for(int i =0; i < n; i ++) vec1.push_back(nums[i]);longlong l =0, r =2e9;while(l < r){longlong mid =(l + r)/2;if(check(mid)) l = mid +1;else r = mid;}return(int)r;}};
4 创建价值相同的连通块
classSolution{public:intcomponentValue(vector<int>& nums, vector<vector<int>>& edges){int n = nums.size();
vector<int> g[n +1],f(n +1);for(auto a : edges){int u = a[0], v = a[1];
g[u].push_back(v);
g[v].push_back(u);}
function<void(int,int)> dfs =[&](int u,int fa){
f[u]= nums[u];for(auto v : g[u]){if(v == fa)continue;dfs(v, u);
f[u]+= f[v];}};dfs(0,-1);int sum = f[0];
vector<int>mp(sum +1,0);for(int i =0; i < n; i ++) mp[f[i]]++;for(int i =1; i <= sum; i ++){if(sum % i)continue;int cnt =0;for(int j = i; j <= sum; j += i) cnt += mp[j];if(cnt == sum / i)return sum / i -1;}return0;}};