从零开始的刷LeetCode生活 第27期 271-280

在这里插入图片描述

class Solution {
public:
    int hundred = 100, thousand = 1000, million = 1000000, billion = 1000000000;
    unordered_map<int, string>numbers;
    string numberToWords(int num) {
        char number20[][30] = {"Zero", "One", "Two", "Three", "Four", "Five",
                                "Six", "Seven", "Eight", "Nine", "Ten", "Eleven",
                                "Twelve", "Thirteen", "Fourteen", "Fifteen",
                                "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
        char number2[][20] = {"Twenty", "Thirty", "Forty", "Fifty", "Sixty",
                                "Seventy", "Eighty", "Ninety"};
        for(int i = 0; i < 20; i ++) numbers[i] = number20[i];
        for(int i = 20, j = 0; i < 100; i += 10, j ++) numbers[i] = number2[j];
        numbers[hundred] = "Hundred", numbers[thousand] = "Thousand";
        numbers[million] = "Million", numbers[billion] = "Billion";
        string res;
        for(int k = 1000000000; k >= 100; k /= 1000)
        {
            if(num >= k)
            {
                res += ' ' + get3(num / k) + ' ' + numbers[k];
                num %= k;
            }
        }
        if(num) res += ' ' + get3(num);
        if(res.empty()) res = ' ' + numbers[0];
        return res.substr(1);
    }

    string get3(int num)
    {
        string res;
        if(num >= hundred)
        {
            res += ' ' + numbers[num / hundred] + ' ' + numbers[hundred];
            num %= hundred;
        }
        if(num)
        {
            if(num < 20) res += ' ' + numbers[num];
            else if(num % 10 == 0) res += ' ' + numbers[num];
            else res += ' ' + numbers[num / 10 * 10] + ' ' + numbers[num % 10];
        }
        return res.substr(1);
    }
};

在这里插入图片描述

class Solution {
public:
    int hIndex(vector<int>& citations) {
        sort(citations.begin(), citations.end());
        int res = 0;
        for(int i = 0; i < citations.size(); i ++)
            if(citations.size() - i <= citations[i])
            {
                res = citations.size() - i;
                break;
            }
        return res;
    }
};

在这里插入图片描述

class Solution {
public:
    int hIndex(vector<int>& citations) {
        if(citations.empty()) return 0;
        int l = 0, r = citations.size() - 1;
        while(l < r)
        {
            int mid = l + r >> 1;
            if(citations.size() - mid <= citations[mid]) r = mid;
            else l = mid + 1; 
        }
        if(citations.size() - l <= citations[l]) return citations.size() - l;
        return 0;
    }
};

在这里插入图片描述

// Forward declaration of isBadVersion API.
bool isBadVersion(int version);

class Solution {
public:
    int firstBadVersion(int n) {
        int l = 1, r = n;
        while(l < r)
        {
            int mid = l + 0ll + r >> 1;
            if(isBadVersion(mid)) r = mid;
            else l = mid + 1;
        }
        return l;
    }
};

在这里插入图片描述

class Solution {
public:
    int numSquares(int n) {
        vector<int> f(n + 1, n);
        f[0] = 0;
        for(int i = 1; i <= n; i ++)
            for(int j = 1; j * j <= i; j ++)
                f[i] = min(f[i], f[i - j * j] + 1);
        return f[n];
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值