leetcode 231 2的幂

描述:

给定一个整数,编写一个函数来判断它是不是 2 的幂次方。java

示例 1:

输入: 1
输出: true
解释: 20 = 1复制代码

示例 2:

输入: 16
输出: true
解释: 24 = 16复制代码

示例 3:

输入: 218
输出: false
复制代码

思路:

【1】  1bash

【2】10函数

【4】100ui

【8】1000spa

...code

能够找一下2的幂的共同点,有且只有一个1,因此能够经过 (n != 0 && (n&(n-1) == 0))来判断。cdn

在java中 Integer.MIN_VALUE - 1 = Integer.MAX_VALUE(和补码有关)。而Integer.MAX_VALUE & Integer.MIN_VALUE 等于0 ,因此当n为Integer.MIN_VALUE的时候,该式子不成立,须要进行一个参数判断
blog

当n == Integer.MIN_VALUE就直接返回false,ssl

其实更好的处理方法就是当 n<=0的时候直接返回false,由于2的幂函数图像只在第1、二象限,随着x的减小只会无限趋近于0,不会等于0,因此当 n<=0时能够直接返回false。
it

代码:

class Solution {
  public boolean isPowerOfTwo(int n) {
    return n <= 0 ? false : (n & (n - 1)) == 0;
  }
}
复制代码


结果:


复制代码
相关文章
相关标签/搜索