• Leetcode题目:Power of Four


    题目:Given an integer (signed 32 bits), write a function to check whether it is a power of 4.

    Example:
    Given num = 16, return true. Given num = 5, return false.

    Follow up: Could you solve it without loops/recursion?

    需要注意的是,本题需要我们不使用循环或递归,因而很自然地想到了关于位操作的方法。

    观察以下数列:

    0 ---二进制--->    0     *

    1 ---二进制--->    1

    2 ---二进制--->    10

    3 ---二进制--->    11

    4 ---二进制--->    100     *

    5 ---二进制--->    101

    6 ---二进制--->    110

    7 ---二进制--->    111

    8 ---二进制--->    1000     *    

    9 ---二进制--->    1001

    10 ---二进制--->    1010

    11 ---二进制--->    1011

    12 ---二进制--->    1100

    13 ---二进制--->    1101

    14 ---二进制--->    1110

    15 ---二进制--->    1111

    16 ---二进制--->    10000     *

    可以发现,所有是4的倍数的数字,它们的二进制都仅有一个1,剩余都是0。并且,需要注意的是,这些1都是在奇数为分布。

    根据以上条件,可以给出如下的代码:

    class Solution {
    public:
        bool isPowerOfFour(int num) {
            int num_minus = num - 1;
            if((num & num_minus) == 0)
            {
                if((num & 0x55555555) != 0)
                {
                    return true;
                }
            }
            return false;
        }
    };

  • 相关阅读:
    FFmpeg 视频处理入门教程
    FFmpeg 视频处理入门教程
    Flutter音视频裁剪flutter_ffmpeg踩坑笔记
    Centos7 tiup搭建tiBD集群、扩容、缩容存储节点、修改监控节点
    tiup实操部署tidb5.1.0 最新版本
    利用ogg实现oracle到kafka的增量数据实时同步
    比喻
    git分布式版本控制系统
    并行和并发区别
    git合并本地分支
  • 原文地址:https://www.cnblogs.com/CodingGirl121/p/5408444.html
Copyright © 2020-2023  润新知