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

LeetCode:2595.奇偶位数

给你一个 正 整数 n 。

用 even 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的偶数下标的个数。

用 odd 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的奇数下标的个数。

请注意,在数字的二进制表示中,位下标的顺序 从右到左。

返回整数数组 answer ,其中 answer = [even, odd] 。



	示例 1:
	
	输入:n = 50
	
	输出:[1,2]
	
	解释:
	
	50 的二进制表示是 110010。
	
	在下标 1,4,5 对应的值为 1。
	
	示例 2:
	
	输入:n = 2
	
	输出:[0,1]
	

解释:

2 的二进制表示是 10。

只有下标 1 对应的值为 1。

 

提示:

1 <= n <= 1000

方法一:遍历二进制数
把n当成一个二进制数来遍历。遍历的顺序是从低位到高位。具体来说,通过n & 1取二进制的最低位,然后把n右移一位,继续计算n & 1,这样可以取到次低位。如此循环,直到n=0为止。在遍历的过程中,统计奇偶下标比特位中的1的个数。

class Solution:
    def evenOddBit(self, n: int) -> List[int]:
        ans = [0, 0]
        i = 0
        while n:
            ans[i] += n & 1
            n >>= 1
            i ^= 1  # 切换奇偶
        return ans

方法二:暴力解法

class Solution:
    def evenOddBit(self, n: int) -> List[int]:
        even = 0
        odd = 0
        binary_str = bin(n)[2:]
        for i in range(len(binary_str)):
            if binary_str[len(binary_str) - i - 1] == '1' and i % 2 == 0:
                even += 1
            elif binary_str[len(binary_str) - i - 1] == '1' and i % 2 != 0:
                odd += 1
        answer = [even, odd]
        return answer

在这里插入图片描述

相关文章:

  • 云原生DevOps:Zadig架构设计与企业实践分析
  • 七星棋牌源码高阶技术指南:6端互通、200+子游戏玩法深度剖析与企业级搭建实战(完全开源)
  • 适用于复杂背景的YOLOv8改进:基于DCN的特征提取能力提升研究
  • Windows网络安全基础
  • 向 OpenAI ChatGPT 提问如何学习黑客
  • 硬盘识别不出来了怎么办?硬盘读不出来的解决方法
  • 基于Flask的租房信息可视化系统的设计与实现
  • 【项目实践06】【Retrofit2 框架的使用】
  • Linux-C/C++《C++/1、C++基础》(C++语言特性、面向对象等)
  • 【人工智能】用Python迈向轻量化深度学习——模型压缩与量化实战指南
  • 植物大战僵尸杂交版v3.2.1最新版本(附下载链接)
  • java简单实现请求deepseek
  • MySQL多列索引查询优化
  • express+Vue2进行项目实战-景点后台管理系统(上篇)
  • SpringCloud-Eureka初步使用
  • uniapp实现app的pdf预览
  • 手机控制电脑远程关机
  • SOC- armv8 启动流程和安全启动
  • 虚拟表格实现全解析
  • 机器学习数学基础:29.t检验
  • 网站开发一般要用到哪些软件/媒体推广
  • 制作网站服务公司/网站排名查询平台
  • 二级学院网站建设自评报告/上海网站排名seo公司
  • 公司网站建设项目详情/推广软文
  • 深圳外贸建站/成都抖音seo
  • php语言网站开发公司北京/列举常见的网络营销工具