当前位置: 首页 > article >正文

【Leetcode 每日一题】2595. 奇偶位数

问题背景

给你一个 整数 n n n
e v e n even even 表示在 n n n 的二进制形式(下标从 0 0 0 开始)中值为 1 1 1 的偶数下标的个数。
o d d odd odd 表示在 n n n 的二进制形式(下标从 0 0 0 开始)中值为 1 1 1 的奇数下标的个数。
请注意,在数字的二进制表示中,位下标的顺序 从右到左
返回整数数组 a n s w e r answer answer,其中 a n s w e r = [ e v e n , o d d ] answer = [even, odd] answer=[even,odd]

数据约束

  • 1 ≤ n ≤ 1000 1 \le n \le 1000 1n1000

解题过程

二进制相关的问题,基本都可以用移位遍历的思路来解决,但是通常也会有不需要循环的骚操作,权当长见识吧。

具体实现

移位遍历

class Solution {

    public int[] evenOddBit(int n) {
        int[] res = new int[2];
        for (int i = 0; n > 0; n >>= 1) {
            res[i] += n & 1;
            // 0 和 1 之间可以通过异或 1 的操作相互转换
            i ^= 1;
        }
        return res;
    }
}

掩码位运算

class Solution {
    // 5 的二进制表示是四位的 0 和 1 交替出现的
    private static final int MASK = 0x55555555;

    public int[] evenOddBit(int n) {
        return new int[]{Integer.bitCount(n & MASK), Integer.bitCount(n & ~MASK)};
    }
}

http://www.kler.cn/a/555348.html

相关文章:

  • Mac安装配置Tomcat 8
  • Django5 实用指南(四)URL路由与视图函数
  • 【CV前沿】YOLOv12: Attention-Centric Real-Time Object Detectors
  • DAY10 Tensorflow 基本函数使用
  • k8s Container runtime network not ready
  • Ubuntu部署ktransformers
  • MySQL中 undolog和redolog区别
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_palloc_small 函数
  • 【Go并发编程】Channel进阶:实现高性能消息队列的5种模式
  • MySQL 视图入门
  • 向量的点乘的几何意义
  • Wireshark使用介绍
  • debezium专栏文章目录
  • Kubernetes 使用 Kube-Prometheus 构建指标监控 +飞书告警
  • 未来AI方向落地场景:小语言模型,super_private_agent
  • 深度学习之图像回归(一)
  • Linux-ubuntu系统移植之Uboot启动流程
  • 使用open-webui+deepseek构建本地AI知识库
  • 黑马Javascript基础02
  • 面向架构评估的质量属性