【每日刷题】Day91

【每日刷题】Day91

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 面试题 05.07. 配对交换 - 力扣(LeetCode)

2. 面试题 08.05. 递归乘法 - 力扣(LeetCode)

3. 挑7_牛客题霸_牛客网 (nowcoder.com)

1. 面试题 05.07. 配对交换 - 力扣(LeetCode)

//思路:构造一个奇数位全为1,偶数位全为0的数和一个奇数位全为0,偶数位全为1的数字。

//将这个两个数字分别与num &,获取num的奇偶位。

//将获取到的奇数位组成的数字>>1,获取到的偶数位组成的数字<<1,返回它们 | 的结果

class Solution {

public:

    int exchangeBits(int num)

    {

//奇数位全为1,偶数位全为0的数字

        long x = 2863311530;

//偶数位全为1,奇数位全为0的数字

        long y = 1431655765;

//获取num奇偶位

        long ret1 = num&x;

        long ret2 = num&y;

        ret1>>=1;

        ret2<<=1;

        return ret1|ret2;

    }

};

2. 面试题 08.05. 递归乘法 - 力扣(LeetCode)

//思路:十进制与二进制的乘法。看图理解

class Solution {

public:

    void mul(int& ans,long long a,long long b)

    {

//如果为0了直接返回

        if(!b)

            return;

//如果当前位为1,则将结果加上a

        if(b&1)

            ans+=a;

//继续往下递归遍历b的位,a+a(完成a*2操作,因为相邻位为两倍关系),b>>1

        mul(ans,a+a,b>>1);

    }

    int multiply(int A, int B)

    {

        int ans = 0;

        mul(ans,A,B);

        return ans;

    }

};

3. 挑7_牛客题霸_牛客网 (nowcoder.com)

//思路:暴力遍历+取模。

#include <iostream>

using namespace std;

int main()

{

      int ans = 0;

      int n;

      cin>>n;

      for(int i = 7;i<=n;i++)

      {

//7的倍数

        if(!(i%7))

            ans++;

        else

        {

//含有7

            int tmp = i;

            while(tmp)

            {

                if(tmp%10==7)

                {

                    ans++;

                    break;

                }

                tmp/=10;

            }

        }

      }

      cout<<ans<<endl;

    return 0;

}

  • 22
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值