力扣 2595. 奇偶位数

题目来源:https://leetcode.cn/problems/number-of-even-and-odd-bits/

C++题解:模2(%2)可以判断奇偶数,右移运算符(>>)是针对二进制数(右边的二进制位丢弃,正数左补0,负数左补1)。奇数位为1,odd++;偶数位为1,even++。

class Solution {
public:
    vector<int> evenOddBit(int n) {
        vector<int> a(2);
        int even = 0, odd = 0;
        int ii = 0;
        while(n>0){
            if(ii % 2 == 0){
                if((n - 2*(n>>1)) % 2 == 1) even++;
            }
            if(ii % 2 == 1){
                if((n - 2*(n>>1) ) % 2 == 1) odd++;
            }
            n = n>>1;
            ii++;
        }
        a[0] = even;
        a[1] = odd;
        return a;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值