【2022/03/27-第286场单周赛】复盘

总结

题目不难。

Q1.找出两数组的不同

两个哈希。

class Solution {
public:
    vector<vector<int>> findDifference(vector<int>& nums1, vector<int>& nums2) {
        vector<vector<int>> ans(2);
        int h1[2020] = {0}, h2[2020] = {0};
        for(auto i : nums1) h1[i + 1000] = 1;
        for(auto i : nums2) h2[i + 1000] = 1;
        for(int i = 0; i < 2020; ++i){
            if(h1[i] == 1 && h2[i] == 0) ans[0].push_back(i - 1000);
            if(h1[i] == 0 && h2[i] == 1) ans[1].push_back(i - 1000);
        }
        return ans;
    }
};

Q2.美化数组的最少删除数

遍历过去即可。

class Solution {
public:
    int minDeletion(vector<int>& nums) {
        int n = nums.size(), ret = 0;
        for(int i = 0; i < n; i += 2){
            int now = 0;
            while(i + 1 + now < n && nums[i + 1 + now] == nums[i]) ++now;
            i += now;
            ret += now;
        }
        if((n - ret) % 2) ++ret;
        return ret;
    }
};

Q3.找到指定长度的回文数

找到基数10^((k+1)/2),然后加上(序数-1),然后逆序,拼接。

class Solution {
public:
    
    long long rev(long long x){
        long long ret = 0;
        while(x){
            ret = ret * 10 + x % 10;
            x /= 10;
        }
        return ret;
    }
    
    vector<long long> kthPalindrome(vector<int>& q, int len) {
        vector<long long> ret;
        int w = len / 2 + (len % 2);
        long long base = pow(10, w - 1);
        for(long long i : q){
            if(i > 9 * base) ret.push_back(-1);
            else ret.push_back((base + i - 1) * pow(10, len / 2) + rev((base + i - 1) / pow(10, len % 2)));
        }
        return ret;
    }
};

Q4.从栈中取出 K 个硬币的最大面值和

套路题。

class Solution {
public:
    int maxValueOfCoins(vector<vector<int>>& piles, int k) {
        int n = piles.size(), mx = 0;
        vector<int> pre(k + 1, 0), now(k + 1, 0);
        for(int i = 0; i < n; ++i){
            int t = 0;
            for(int j = 0; j <= piles[i].size(); ++j){
                if(j > 0) t += piles[i][j - 1];
                for(int l = j; l <= k; ++l){
                    now[l] = max(now[l], pre[l - j] + t);
                }
            }
            pre = now;
        }
        return now[k];
    }
};
posted on 2022-05-06 11:22  damnglamour  阅读(19)  评论(0)    收藏  举报