2019-04-08

LeetCode 342. Power of Four.jpg

LeetCode 342. Power of Four

Description

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

Example 1:

Input: 16
Output: true
Example 2:

Input: 5
Output: false
Follow up: Could you solve it without loops/recursion?

描述

给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。

示例 1:

输入: 16
输出: true
示例 2:

输入: 5
输出: false
进阶:
你能不使用循环或者递归来完成本题吗?

思路

  • 一个数若是 4 的幂次方,那么这个数的二进制表示只有 1 一个 1。
  • 并且这个数的1 出现在(从右往左) 第 1,或 3,或 5 ,或 7 ... 位。
  • 一个数 num 只有一个 1 那么,num 和 num -1 与运算结果为 0。
  • 1 出现在奇数位,那么此数与 1010101010101010101010101010101 与运算为 num 本身。
# -*- coding: utf-8 -*-
# @Author:             何睿
# @Create Date:        2019-04-08 16:58:04
# @Last Modified by:   何睿
# @Last Modified time: 2019-04-08 17:11:49


class Solution:
    def isPowerOfFour(self, num: 'int') -> 'bool':
        # num 数字不为零
        # num 的二级制只有一个 1
        # num 中 1 的位置出现在第 1 位,或第 3 位,或第5 ... 位
        return num != 0 and num & (
            num - 1) == 0 and num & 0b1010101010101010101010101010101 == num

源代码文件在 这里
©本文首发于 何睿的博客 ,欢迎转载,转载需保留 文章来源 ,作者信息和本声明.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • LeetCode 341. Flatten Nested List Iterator Description Gi...
    ruicore阅读 229评论 0 0
  • 初识jQuery [图片上传失败...(image-832757-1554710646556)] 本章学习目标 (...
    拾起_518阅读 1,662评论 0 0
  • 1 模块 ngx_http_access_module syntax:allow address| CID...
    VictoryKingLIU阅读 423评论 0 0
  • 本文意在抒情,出处考究未必依史,到绝非空穴来风。余作祭文多以缅怀,难免主观色彩过浓,抑或个人英雄主义的崇拜,然所...
    子羽墨阅读 769评论 0 0
  • 那些年,她是一个颇有才情的女孩,躲在每一个清晨与黄昏里,躲在每个雨天与雾天里,做梦。雨不大不小的时候,一个...
    云居雁阅读 358评论 0 1

友情链接更多精彩内容