7004.判断字母缩略词(字符串)
思路:1.判断字符串个数是否跟缩略词长度相同 2.定位比较
class Solution {
public:
bool isAcronym(vector<string>& words, string s) {
int n=words.size();
if(n!=s.size()) return false;
for(int i=0;i<n;i++){
if(words[i][0]!=s[i])
return false;
}
return true;
}
};
6450.k-avoiding数组的最小总和(组合)
思路:边添加边判断是否已经存在一个数与当前添加数和为k
class Solution {
public:
int minimumSum(int n, int k) {
//思路:n个元素,两两之和不为k
unordered_map<int,int>map;
int count=1,j=1;
while(j>0 && count<=n){
if(map.find(k-j)==map.end()){
count++;
map[j]++;
}
j++;
}
int sum=0;
for(auto it:map){
sum+=it.first;
}
return sum;
}
};
7006.销售利润最大化
相同题:2008.出租车的最大盈利
思路:dp
6467.找出最长等值数组
思路:计数偏移法+双指针
class Solution {
public:
int longestEqualSubarray(vector<int>& nums, int k) {
int n=nums.size(),ans=0;
vector<vector<int>>pos(n+1);
for(int i=0;i<n;i++)
pos[nums[i]].push_back(i-pos[nums[i]].size());
for(auto ps:pos){
int left=0;
for(int right=0;right<ps.size();right++){
while(ps[right]-ps[left]>k)
left++;
ans=max(ans,right-left+1);
}
}
return ans;
}
};