休息刷一下周赛

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值