Day3力扣打卡

打卡记录

Day3力扣打卡_第1张图片


改变一个整数能得到的最大差值(贪心)

链接

得到最大的整数,找到一个高位将它修改为 9。同理,想要得到最小的整数,找到一个高位将它修改为 0。

class Solution {
public:
    int maxDiff(int num) {
        auto replace = [&](string& s, char x, char y) -> void {
            for (char& ch : s)
                if (ch == x) ch = y;
        };
        string a = to_string(num);
        string b(a);
        for (char& ch : a)
            if (ch != '9') {
                replace(a, ch, '9');
                break;
            }
        for (int i = 0; i < b.size(); ++i) {
            if (!i) {
                if (b[i] != '1') {
                    replace(b, b[i], '1');
                    break;
                }
            }
            else {
                if (b[i] != '0' && b[i] != b[0]) {
                    replace(b, b[i], '0');
                    break;
                }
            }
        }
        return stoi(a) - stoi(b);
    }
};

有效时间的数目(组合数学)

链接
Day3力扣打卡_第2张图片

class Solution {
    int count(string t, int period) {
        int ans = 0;
        for (int i = 0; i < period; i++)
            if ((t[0] == '?' || i / 10 == t[0] - '0') &&
                (t[1] == '?' || i % 10 == t[1] - '0'))
                ans++;
        return ans;
    }
public:
    int countTime(string time) {
        return count(time.substr(0, 2), 24) * count(time.substr(3), 60);
    }
};

你可能感兴趣的:(leetcode刷题打卡,leetcode,算法,c++)