LeetCode 2595.奇偶位数:位运算

news/2025/2/22 21:11:14

【LetMeFly】2595.奇偶位数:位运算

力扣题目链接:https://leetcode.cn/problems/number-of-even-and-odd-bits/

给你一个 整数 n

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

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

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

 

示例 1:

输入:n = 17
输出:[2,0]
解释:17 的二进制形式是 10001 。 
下标 0 和 下标 4 对应的值为 1 。 
共有 2 个偶数下标,0 个奇数下标。

示例 2:

输入:n = 2
输出:[0,1]
解释:2 的二进制形式是 10 。 
下标 1 对应的值为 1 。 
共有 0 个偶数下标,1 个奇数下标。

 

提示:

  • 1 <= n <= 1000

解题方法:位运算

解决这道题需要解决三个问题:

  1. 如何取出 n n n的最低位?

    n & 1即可

  2. 如何移除 n n n的最低为?

    直接右移n >>= 1即可

  3. 如何变换奇偶下标?

    布尔类型index = !index或整型index ^= 1都可

  • 时间复杂度 O ( log ⁡ ( n ) ) O(\log(n)) O(log(n)) log ⁡ 1024 = 10 \log 1024=10 log1024=10,运算次数很低。
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
/*
 * @Author: LetMeFly
 * @Date: 2025-02-20 11:04:55
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2025-02-20 11:06:12
 */
class Solution {
public:
    vector<int> evenOddBit(int n) {
        vector<int> ans(2);
        bool index = false;
        while (n) {
            ans[index] += n & 1;
            index = !index;
            n >>= 1;
        }
        return ans;
    }
};
Python
'''
Author: LetMeFly
Date: 2025-02-20 11:06:38
LastEditors: LetMeFly.xyz
LastEditTime: 2025-02-20 11:08:51
'''
from typing import List

class Solution:
    def evenOddBit(self, n: int) -> List[int]:
        ans = [0, 0]
        index = False
        while n:
            ans[index] += n & 1
            index = not index
            n >>= 1
        return ans
Java
/*
 * @Author: LetMeFly
 * @Date: 2025-02-20 11:06:42
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2025-02-20 11:10:57
 */
class Solution {
    public int[] evenOddBit(int n) {
        int[] ans = new int[2];
        int index = 0;
        while (n > 0) {
            ans[index] += n & 1;
            index ^= 1;
            n >>= 1;
        }
        return ans;
    }
}
Go
/*
 * @Author: LetMeFly
 * @Date: 2025-02-20 11:06:49
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2025-02-20 11:18:27
 */
package main

func evenOddBit(n int) []int {
    ans := make([]int, 2)
    for index := 0; n > 0; n >>= 1 {
        ans[index] += n & 1
        index ^= 1
    }
    return ans
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

Tisfy:https://blog.letmefly.xyz/2025/02/20/LeetCode 2595.奇偶位数/


http://www.niftyadmin.cn/n/5862763.html

相关文章

Lua C API:深入理解 lua_pushnumber 函数 — 将数字压入 Lua 栈中

在使用 Lua 与 C 进行交互时&#xff0c;Lua 提供了一套强大的 C API 来管理 Lua 状态机、操作栈上的数据。lua_pushnumber 是其中一个非常常用的函数&#xff0c;用于将一个数字值从 C 推送到 Lua 栈上。接下来&#xff0c;我们将详细讲解这个函数的用法&#xff0c;原理&…

人工智能之自动驾驶技术体系

自动驾驶技术体系 自动驾驶技术是人工智能在交通领域的重要应用&#xff0c;旨在通过计算机视觉、传感器融合、路径规划等技术实现车辆的自主驾驶。自动驾驶不仅能够提高交通效率&#xff0c;还能减少交通事故和环境污染。本文将深入探讨自动驾驶的技术体系&#xff0c;包括感…

文本分类与情感分析算法

引言 自然语言处理(NLP)作为人工智能的重要分支,致力于让计算机理解和处理人类语言。在这一领域中,文本分类和情感分析是两项基础且至关重要的任务。文本分类旨在将文本划分到预定义的类别中,而情感分析则关注于识别和提取文本中的情感倾向。本文将深入探讨文本分类和情感…

关于YApi接口操作

YApi有 接口集合 和 测试集合 两个概念。 接口集合 将接口进行分类&#xff0c;使接口结构更清晰&#xff0c;一个接口只能属于一个集合&#xff0c;且不允许与其他接口重名。测试集合 为了方便我们测试接口&#xff0c;测试集合 将若干接口组合在一起&#xff0c;在这里一个接…

本地部署DeepSeek的硬件配置建议

本地部署DeepSeek的硬件配置需求因模型参数规模和部署工具不同而有所差异&#xff0c;以下是综合多个来源的详细要求&#xff1a; 1. 基础配置&#xff08;适用于7B参数模型&#xff09; 内存&#xff1a;最低8GB&#xff0c;推荐16GB及以上&#xff1b;若使用Ollama工具&…

等保测评-GaussDB高斯数据库

查询版本:select version(); 或gaussdb --version 一、身份鉴别 a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换; 身份验证:是否采用用户名+密码或其他认证方式 唯一性(USESYSID):select * from pg_user; 复杂…

IntelliJ IDEA中Maven配置全指南

一、环境准备与基础配置 1.1 Windows 环境下载并配置 Maven 见此篇博文&#xff1a;环境配置 1.2 IDEA配置步骤 打开设置面板&#xff1a;File → Settings → Build → Build Tools → Maven 关键配置项&#xff1a; Maven home path E:\apache-maven-3.9.9 &#xff08;…

黑马点评_登录模块

/*** 发送验证码*/Overridepublic Result sendCode(String phone, HttpSession session) {// 1、判断手机号是否合法if (RegexUtils.isPhoneInvalid(phone)) {return Result.fail("手机号格式不正确");}// 2、手机号合法&#xff0c;生成验证码&#xff0c;并保存到S…