leetcode-191- Number of 1 Bits

1436 단어

문제.


제목: [leetcode-191]

사고의 방향


비교적 간단하고 위치 이동 조작이 쉽다.위향량으로 바꾸어 하다.

코드

class Solution {
public:
    int hammingWeight(uint32_t n) {
        int ans = 0;
        while( n ){
            if( n&1 ) ++ans;
            n >>= 1;
        }
        return ans;
    }
};

물론 이 문제에는 더 좋은 답안이 있다.

사고의 방향


n&(n-1)의 묘용

코드

/* n&n-1   。 n n-1     ,  n,   1      , n-1,     n = 10-100 n-1 = 10-011   ,n&n-1   n    1  0 */


class Solution {
public:
    int hammingWeight(uint32_t n) {
        int cnt = 0;
        while( n )
        {
            ++cnt;
            n &= n-1;
        }
        return cnt;
    }
};

좋은 웹페이지 즐겨찾기