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

( 位运算 ) 338. 比特位计数 ——【Leetcode每日一题】

❓338. 比特位计数

难度:简单

给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。

示例 1:

输入:n = 2
输出:[0,1,1]
解释:
0 --> 0
1 --> 1
2 --> 10

示例 2:

输入:n = 5
输出:[0,1,1,2,1,2]
解释:
0 --> 0
1 --> 1
2 --> 10
3 --> 11
4 --> 100
5 --> 101

提示:

  • 0 < = n < = 1 0 5 0 <= n <= 10^5 0<=n<=105

进阶:

  • 很容易就能实现时间复杂度为 O ( n l o g n ) O(n log n) O(nlogn) 的解决方案,你可以在线性时间复杂度 O ( n ) O(n) O(n) 内用一趟扫描解决此问题吗?
  • 你能不使用任何内置函数解决此问题吗?(如,C++ 中的 __builtin_popcount

💡思路:位运算

基础知识必知:一篇文章搞懂位运算 !

对于数字 6(110),它可以看成是 4(100) 再加一个 2(10),因此 dp[i] = dp[i&(i-1)] + 1;

即,使用位运算 去除最低的那一位 1,此时的 dp[i&(i-1)]已经计算过,然后再加上最低为的这个 1

🍁代码:(Java、C++)

Java

class Solution {public int[] countBits(int n) {int[] ans = new int[n + 1];for(int i = 1; i <= n; i++){ans[i] = ans[i & (i - 1)] + 1;}return ans;}
}

C++

class Solution {
public:vector<int> countBits(int n) {vector<int> ans(n + 1);for(int i = 1; i <= n; i++){ans[i] = ans[i & (i - 1)] + 1;}return ans;}
};

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),对于每个整数,只需要 O ( 1 ) O(1) O(1) 的时间计算「一比特数」。
  • 空间复杂度 O ( n ) O(n) O(n),除了返回的数组以外,空间复杂度为常数。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我 leetCode专栏,每日更新!

注: 如有不足,欢迎指正!

相关文章:

( 位运算 ) 338. 比特位计数 ——【Leetcode每日一题】

❓338. 比特位计数 难度&#xff1a;简单 给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;[0,1,…...

Unity之新版输入系统InputSystem入门

一.前言 最近Unity版本全面升级到Unity2021了,着色器也全面使用URP,接下来毫无疑问,输入系统也要全面升级InputSystem,这也是Unity官方希望我们做的,毕竟现在都2023年了,我们的技术是需要跟上时代的步伐。 二.新老版本区别 老版本的InputSysten系统,其实就一个Input静…...

python 之 logging的使用

一、日志模块 import logginglogging.debug("调试日志") logging.info(消息日志) logging.warning("告警日志") logging.error(错误日志) logging.critical(严重错误日志)debug&#xff08;调试&#xff09;级别用于输出调试信息&#xff0c;这些信息主…...

gunicorn常用参数命令

Gunicorn 是一个 Python 的 WSGI HTTP 服务器。具有实现简单,轻量级,高性能等特点。更多介绍内容参考官网&#xff0c;这里介绍几个常用参数。 安装 pip3 install gunicorn通过输入gunicorn -v查看版本。 最简洁的启动。首先进入到项目目录&#xff0c;例如django项目和mana…...

TimerResolution.exe

TimerResolution.exe是一款常用的Windows实用程序,用于调整系统计时器的分辨率。它提供了一种简便的方法,让用户能够更精确地控制计时器的运行方式,从而改善系统的性能和响应时间。无论是进行游戏、音频处理还是其他需要精确计时的任务,TimerResolution.exe都能提供极大的帮…...

Qt魔法书:打造自定义鼠标键盘脚本

Qt魔法书&#xff1a;打造自定义鼠标键盘脚本 一、引言&#xff08;Introduction&#xff09;1.1 脚本的重要性&#xff08;Importance of Scripts&#xff09;1.2 Qt在脚本制作中的优势&#xff08;Advantages of Qt in Script Making&#xff09;1.3 文章目标与结构概述&…...

〖Python网络爬虫实战㉖〗- Selenium库和ChromeDriver驱动的安装

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付…...

U8产成品入库API接口 --参照生产订单/产品检验/不良品

//第二步&#xff1a;构造环境上下文对象&#xff0c;传入login&#xff0c;并按需设置其它上下文参数 U8EnvContext envContext new U8EnvContext(); envContext.U8Login u8Login; //第三步&#xff1a;设置API地址标识(Url) …...

gdb打印的堆栈有些函数是??()是什么

当 gdb 打印的堆栈中出现 ??() 格式的函数名时&#xff0c;通常表示对应的函数名无法被解析&#xff0c;这可能是由以下几种原因导致的&#xff1a; 缺少符号表信息&#xff1a;如果程序的可执行文件没有包含符号表信息&#xff0c;或者 gdb 没有加载符号表信息&#xff0c;就…...

【Jmeter第三章】Jmeter给请求添加请求头

给请求加上请求头最常见的场景就是在请求头上添加token了&#xff0c;这里也拿添加token来举例 1、添加某个请求的请求头 1、选中HTTP请求&#xff0c;右键添加 2、添加请求头 2、添加公共的请求头信息 其实步骤和上面是一样的&#xff0c;只不过是选择&#xff1a;线程组…...

WebApi必须知道的RestFul,Swagger,OAuth2.0

什么是RestFul RestFul是一种软件架构风格&#xff0c;它是基于HTTP协议设计的。它是一种轻量级的、简单易懂、易于维护的架构风格&#xff0c;主要用于Web服务的设计。它的设计原则是面向资源&#xff0c;每个资源都有唯一的标识符&#xff0c;客户端通过HTTP协议对这些资源进…...

【网络编程】demo版UDP网络服务器实现

文章目录 一、引入二、服务端实现2.1 创建套接字socket2.2 绑定bind2.3 启动服务器2.4 IP的绑定2.5 读取数据recvfrom 三、用户端实现3.1 绑定问题3.2 发送数据sendto 四、源码 一、引入 在上一章【网络编程】socket套接字中我们讲述了TCP/UDP协议&#xff0c;这一篇就是简单实…...

C++的stack和queue

stack和queue 1.stackstack的模拟实现 2.queuequeue的模拟实现 3.容器适配器3.1. 什么是容器适配器3.2. STL标准库中stack和queue的底层结构3.3. deque的简单介绍3.3.1. deque原理介绍3.3.2. deque的缺陷3.3.3. 为什么选择deque作为stack和queue的底层默认容器 1.stack stack的…...

C++ RAII机制

C RAII机制 1. 介绍2. 示例2.1 示例一2.2 示例二 3. 使用 Reference&#xff1a; C RAII 浅析ChatGPT 相关文章&#xff1a; 3. C 并行编程(thread) 1. 介绍 RAII 的全称是 Resource Acquisition Is Initialization&#xff0c;它是一种编程技术&#xff0c;用于管理资源的…...

AI模型部署概述

心口如一&#xff0c;犹不失为光明磊落丈夫之行也。——梁启超 文章目录 :smirk:1. AI模型部署方法:blush:2. AI模型部署框架ONNXNCNNOpenVINOTensorRTMediapipe如何选择 :satisfied:3. AI模型部署平台 &#x1f60f;1. AI模型部署方法 在AI深度学习模型的训练中&#xff0c;…...

【Rust 日报】2023-05-17 pgx -- 用于在 Rust 中开发 PostgreSQL 扩展的框架

pgx -- 用于在 Rust 中开发 PostgreSQL 扩展的框架 pgx是一个用于在 Rust 中开发 PostgreSQL 扩展的框架&#xff0c;并力求尽可能地惯用和安全。pgx 支持 Postgres v10-v14。 主要特征: 带有 cargo-pgx 的完全托管的开发环境; # 快速创建新的扩展 cargo pgx new# 安装新的&…...

二十、Zipkin持久化链路跟踪

目录 Zipkin持久化 使用mysql数据库持久化 1、创建zipkin数据库 2、启动zipkin使用以下脚本 3、访问接口&#xff08;配置了sleuth链路跟踪&#xff09; 使用ElasticSearch持久化 zipkin启动脚本 Zipkin持久化 Zipkin server默认会将追踪数据信息保存在内存中&#xff0…...

大学毕业设计这样做可以吗

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…...

NSUserDefaults

目录 1. 简介2. 基本使用2.1 步骤2.2 对应接口2.2 示例代码 3. 常用接口及属性3.1 存储3.2 获取 4. 注意点4.1 NSUserDefaults 存储的对象全是不可变的4.2 将自定义类型数据读写 NSUserDefaults4.3 非即时写入 5.参考链接 1. 简介 NSUserDefaults是一个单例&#xff0c;在整个程…...

Windows下通过cwRsync备份到服务器服务器之间使用rsync备份传输

Windows下通过cwRsync备份到服务器&服务器之间使用rsync备份传输 Linux服务器配置Rsync服务端1、安装Rsync2、配置rsyncd.conf3、创建目录、密码文件并修改权限4、启动rsync服务 Windows配置cwRsync客户端1、下载并解压cwRsync客户端2、打开cmd&#xff0c;执行同步命令 Wi…...

PADS-LOGIC模块化原理图设计实战:从基础设置到MCU电路集成

1. PADS-LOGIC模块化设计入门指南 第一次打开PADS Logic时&#xff0c;很多新手会被密密麻麻的菜单和工具栏吓到。其实只要掌握几个核心功能&#xff0c;就能快速上手模块化原理图设计。我刚开始用这个软件时也走过不少弯路&#xff0c;现在把最实用的入门技巧分享给大家。 软件…...

M2FP实战应用:电商模特图批量处理,自动生成精准蒙版

M2FP实战应用&#xff1a;电商模特图批量处理&#xff0c;自动生成精准蒙版 1. 电商图像处理的行业痛点 在电商行业&#xff0c;商品展示图的质量直接影响转化率。特别是服装类目&#xff0c;模特图的后期处理往往占据大量人力成本&#xff1a; 抠图耗时&#xff1a;传统Pho…...

Dify性能优化实战:从源码拆解到落地,我是如何将应用响应速度提升3倍的

Dify性能优化实战&#xff1a;从源码拆解到落地&#xff0c;我是如何将应用响应速度提升3倍的 当我们的Dify应用从几百用户增长到上万用户时&#xff0c;那些曾经"足够快"的接口逐渐变成了用户投诉的焦点。一个看似简单的知识库检索可能需要3-5秒才能返回结果&#x…...

Qwen3-14B代码解释效果:将100行Python重构为可读注释+优化建议

Qwen3-14B代码解释效果&#xff1a;将100行Python重构为可读注释优化建议 1. 模型能力展示&#xff1a;代码解释与重构 Qwen3-14B作为一款强大的大语言模型&#xff0c;在代码理解与重构方面展现出惊人的能力。我们测试了它对100行复杂Python代码的解释与重构效果&#xff0c…...

lingbot-depth-pretrain-vitl-14惊艳效果:室内走廊长距离(8m+)深度连续性展示

lingbot-depth-pretrain-vitl-14惊艳效果&#xff1a;室内走廊长距离&#xff08;8m&#xff09;深度连续性展示 1. 引言&#xff1a;当AI“看见”深度 想象一下&#xff0c;你站在一条长长的走廊里&#xff0c;一眼望不到头。你能大概判断出走廊有多长&#xff0c;远处的门离…...

人类微生物组数据分析终极指南:如何使用curatedMetagenomicData快速上手

人类微生物组数据分析终极指南&#xff1a;如何使用curatedMetagenomicData快速上手 【免费下载链接】curatedMetagenomicData Curated Metagenomic Data of the Human Microbiome 项目地址: https://gitcode.com/gh_mirrors/cu/curatedMetagenomicData 在生物信息学研究…...

BLIP 实战手册:从零到一完成 Image-Text Captioning 任务微调

1. 认识BLIP与Image-Text Captioning 第一次接触BLIP模型时&#xff0c;我被它处理图像和文本的能力惊艳到了。想象一下&#xff0c;你给模型一张猫咪晒太阳的照片&#xff0c;它能自动生成"一只橘猫在窗台上慵懒地晒太阳"这样的描述——这就是Image-Text Captioning…...

从Quad-Bayer到最终成片:手把手拆解手机48MP传感器背后的Remosaic与Demosaic流程

从Quad-Bayer到最终成片&#xff1a;手把手拆解手机48MP传感器背后的Remosaic与Demosaic流程 当你在智能手机上轻触"高像素模式"按钮时&#xff0c;那颗微小的图像传感器内部正上演着一场精密的数字魔术。现代48MP Quad-Bayer传感器通过像素排列重组与色彩还原技术&a…...

手机号查询QQ号终极指南:3步快速找回遗忘账号

手机号查询QQ号终极指南&#xff1a;3步快速找回遗忘账号 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾经更换手机后忘记了绑定的QQ号&#xff1f;或者需要验证家人朋友的QQ账号关联情况&#xff1f;phone2qq项目提供了一…...

intv_ai_mk11多任务能力展示:写邮件/析带货优劣/润色文案/口语化改写/概念白话解释

intv_ai_mk11多任务能力展示&#xff1a;写邮件/析带货优劣/润色文案/口语化改写/概念白话解释 1. 认识intv_ai_mk11对话机器人 intv_ai_mk11是一款基于7B参数Llama架构的AI对话助手&#xff0c;运行在GPU服务器上。这个智能助手不仅能回答各类问题&#xff0c;还能帮助你完成…...