从零开始的刷LeetCode生活 第48期 516-520

在这里插入图片描述

class Solution {
public:
    int longestPalindromeSubseq(string s) {
        int n = s.size();
        vector<vector<int>>dp(n, vector<int>(n, 0));
        for(int i = 0; i < n; i ++)
            dp[i][i] = 1;
        for(int i = n - 2; i >= 0; i --)
            for(int j = i + 1; j < n; j ++)
                if(s[i] == s[j])
                    dp[i][j] = dp[i + 1][j - 1] + 2;
                else
                    dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]);
        return dp[0][n - 1];        
    }
};

在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    int findMinMoves(vector<int>& machines) {
        int sum = 0;
        for(auto c : machines)
            sum += c;
        if(sum % machines.size() != 0)
            return -1;
        int target = sum / machines.size();
        int res = 0, balance = 0;
        for(int i = 0; i < machines.size(); i ++)
        {
            balance += machines[i] - target;
            res = max(res, max(abs(balance), machines[i] - target));
        } 
        return res;
    }
};

在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    int change(int amount, vector<int>& coins) {
        vector<int>dp(amount + 1);
        dp[0] = 1;
        for(auto c : coins)
            for(int i = 0; i + c <= amount; i ++)
                dp[i + c] += dp[i];
        return dp[amount];
    }
};

在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    int total;
    int count;
    int n_cols;
    unordered_map<int, int>blackMap;
    Solution(int n_rows, int n_cols) {
        this->n_cols = n_cols;
        total = count = n_rows * n_cols;
    }
    
    vector<int> flip() {
        int r = rand() % count;
        while(blackMap.count(r))
            r = blackMap[r];
        blackMap[r] = --count;
        return {r / n_cols, r % n_cols};
    }
    
    void reset() {
        count = total;
        blackMap.clear();
    }
};

/**
 * Your Solution object will be instantiated and called as such:
 * Solution* obj = new Solution(n_rows, n_cols);
 * vector<int> param_1 = obj->flip();
 * obj->reset();
 */

在这里插入图片描述

class Solution {
public:
    bool detectCapitalUse(string word) {
        int upper = 0;
        int lower = 0;
        for(int i = 0; i < word.size(); i ++)
            if(word[i] >= 'a')
                lower ++;
            else 
                upper ++;
        if(upper == word.size())
            return true;
        if(lower == word.size())
            return true;
        if(word[0] < 'a' && upper == 1)
            return true;
        return false;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值