LeetCode周赛298

一、5242.兼具大小写的最好英文字母

1、原题链接:5242.兼具大小写的最好英文字母

2、解题思路:

用一个set来存储字符串中的每个字符,然后从‘z’往‘a’遍历,若该字母大小写均存在,则输出。

3、参考代码:

class Solution {
public:
    string greatestLetter(string s) {
        unordered_set<char> S;
        for (auto c: s) S.insert(c);
        for (char i = 'z'; i >= 'a'; i -- ) {
            if (S.count(i) && S.count(i - 32)) {
                //string(i,j) ,i表示输出几个相同的字符,j表示该字符的ASCII码
                return string(1, i - 32);
            }
        }

        return "";
    }
};

二、2310.个位数为K 的整数之和

1、原题链接:2310.个位数为K 的整数之和

2、解题思路:

x个个位是k的整数相加的和sum,sum的个位等于num的个位,此时的x就是满足题目要求的最小值。

为什么x取值从1-10?因为当x取>10的值时,会与之前的取值重复。

3、参考代码:

class Solution {
public:
    int minimumNumbers(int num, int k) {
        if( !num ) return 0;
        for(int x = 1;x <= 10; x ++ )
            //只需要判断x*k的个位数字是否和num的个位数字相同,且此时的x就是满足条件的最小值
            if(x * k % 10 == num % 10 && x * k <= num) return x;
        return -1;
    }
};

三、2311小于等于K的最长二进制子序列

1、原题链接:2311小于等于K的最长二进制子序列

2、解题思路:

从低位到高位遍历 s,记需要移除的 1 的个数为 removed:

若当前位为 0,可保留;
若当前位为 1,分类判断:
        计入当前位 1,数字总和依然 ≤k,可保留;
        计入当前位 1,数字总和 >k,不可保留。
最终返回 s 的总长度减去需要删除的 1 的个数。

(  当遍历到的 1 的位数 ≥30 时可直接删除该位的 1,因为 2^30=1073741824>10^9 > 2^29。)

3、参考代码:

class Solution {
public:
    int longestSubsequence(string s, int k) {
        int n = s.size();
        //当前二进制数的总和
        int summ = 0;
        //已经移除的数的个数
        int removed = 0;

        for(int i = n - 1; i >= 0; i -- )
        {
            if(s[i] == '1'){
            //当前二进制数的位数
            int offset = n - i - 1;
            if(offset >= 30 || summ + (1 << offset) > k) removed += 1;
            else summ += (1 << offset);
            }
        }

        return n - removed;
    }
};

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值