LeetCode 2395. 和相等的子数组
class Solution {
public:
bool findSubarrays(vector<int>& nums) {
map<int,int>mp;
for(int l=0;l+2-1<nums.size();l++)
{
int r=l+2-1;
int s=0;
for(int k=l;k<=r;k++)s+=nums[k];
if(mp.count(s))return true;
mp[s]++;
}
return false;
}
};
LeetCode 2396. 严格回文的数字
class Solution {
public:
bool isStrictlyPalindromic(int n) {
return false;
}
};
LeetCode 2397. 被列覆盖的最多行数
class Solution {
public:
int get(int x)
{
int res=0;
while(x){if(x&1)res++;x>>=1;}
return res;
}
int maximumRows(vector<vector<int>>& mat, int cols) {
int n=mat.size(),m=mat[0].size();
vector<int>v(n);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
v[i]|=(mat[i][j]<<(m-j-1));
int res=0;
for(int i=0;i<(1<<m);i++)
{
int cnt=0;
if(get(i)==cols)
{
vector<int>backup(v);
for(int j=0;j<n;j++)
backup[j]^=(backup[j]&i);
for(int j=0;j<n;j++)
if(!backup[j])cnt++;
res=max(res,cnt);
}
}
return res;
}
};
LeetCode 2398. 预算内的最多机器人数目
typedef long long LL;
class Solution {
public:
int maximumRobots(vector<int>& chargeTimes, vector<int>& runningCosts, long long budget) {
deque<int>q;
int n=chargeTimes.size();
int res=0;
LL sum=0;
for(int i=0,j=0;i<n;i++)
{
sum+=runningCosts[i];
while(q.size()&&chargeTimes[q.back()]<=chargeTimes[i])q.pop_back();
q.push_back(i);
while(q.size()&&sum*(i-j+1)+chargeTimes[q.front()]>budget)
{
sum-=runningCosts[j];
if(q.front()==j)q.pop_front();
j++;
}
res=max(res,i-j+1);
}
return res;
}
};