【leetcode】 Power of Two(Java)

1075 단어 자바LeetCode
Power of Two
Given an integer, write a function to determine if it is a power of two.
아주 간단 한 문제 입 니 다. 효율 을 고찰 하 는 것 이 더 많 을 것 같 습 니 다. 저 는 비트 연산 을 사 용 했 는데 결 과 는 beats 16.92% 에 불과 합 니 다.
문제 풀이 방향:
사고방식 은 크게 2 진법 에서 2 를 만족 시 키 는 멱 형식 인지 아 닌 지 를 보 는 것 이다. 정 이 고 한 자리 만 1 이다.
public class Solution {
    public boolean isPowerOfTwo(int n) {
        if(n <= 0)
            return false;
        if(n==1)
            return true;
        int temp = 0;
        if((n & 1) == 1)
            return false;
        for(int i = 1; i < 32; i++){
            n = n >> 1;
            if((n & 1)==1)
                temp++;
            if(temp>1)
                return false;
        }
        return true;
    }
}

그리고 나 서 나 는 생각 에 들 어가 개선 했다.
public class Solution {
    public boolean isPowerOfTwo(int n) {
        if(n <= 0)
            return false;
        if((n&(n-1))==0)
            return true;
        return false;
    }
}

그리고 beats 16.92%...
대신 들 이 어떻게 썼 는 지...Orz

좋은 웹페이지 즐겨찾기