0
点赞
收藏
分享

微信扫一扫

762. 二进制表示中质数个计算置位 / 剑指 Offer 46. 把数字翻译成字符串 / 1873. 计算特殊奖金 / 627. 变更性别 / 196. 删除重复的电子邮箱

上善若水的道 2022-04-05 阅读 42

762. 二进制表示中质数个计算置位【简单题】【每日一题】

思路:【官解方法二】

看到方法二人呆了,还能这么玩~

代码:

class Solution {
    public int countPrimeSetBits(int left, int right) {
        int ans = 0;
        for (int i = left; i <= right; i++) {
            if ((1 << Integer.bitCount(i) & 665772) != 0){
                ans++;
            }
        }
        return ans;
    }
}

剑指 Offer 46. 把数字翻译成字符串【中等题】

思路:

代码:

class Solution {
    public int translateNum(int num) {
        String s = String.valueOf(num);
        //f2 表示 f(i-2)  初值为1
        //f1 表示 f(i-1)  初值为1
        //f  表示 f(i)    初值为1
        //动态转移方程:f = f2 + f1[条件判断成立则加f1,不成立则不加]
        int f2 = 1,f1 = 1,f = 1,len = s.length();
        for (int i = 1; i < len; i++) {
            f2 = f1;//更新f(i-2) = f(i-1)
            f1 = f;//更新f(i-1) = f
            f = f1;//更新f(i)等于f(i-1)
            String pre = s.substring(i-1,i+1);//取出当前i和前一位组成的2位数
            //判断是否能组成新字符 即pre表示的数是否在[10,25]之间
            if (pre.compareTo("25") <= 0 && pre.compareTo("10") >= 0){
                f += f2;//f(i-2)贡献方案数,累加
            }
        }
        return f;
    }
}

1873. 计算特殊奖金【简单题】

在这里插入图片描述

代码:

# Write your MySQL query statement below
# select employee_id,
# if(employee_id % 2 != 0 && name not like 'M%',salary,0)
# as bonus 
# from Employees
# order by employee_id;

select employee_id,
    case
        when employee_id % 2 = 1 && name not like 'M%' then salary
        else 0
    end bonus
from Employees
order by employee_id;

627. 变更性别【简单题】

在这里插入图片描述

代码:

# Write your MySQL query statement below
# update Salary set sex = if(sex = 'f','m','f');

update Salary set sex = 
    case 
        when sex = 'f' then 'm'
        else 'f'
    end;

196. 删除重复的电子邮箱【简单题】

在这里插入图片描述

# Please write a DELETE statement and DO NOT write a SELECT statement.
# Write your MySQL query statement below

DELETE p1 from Person p1,Person p2 
where p1.email = p2.email && p1.id > p2.id;
举报

相关推荐

0 条评论