【动态规划-简单】剑指 Offer II 003. 前 n 个数字二进制中 1 的个数

剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。忽略答案数组的空间消耗,空间复杂度。 阅读详情

【题目】
给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。
示例 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 <= 105

进阶:

给出时间复杂度为 O(n*sizeof(integer)) 的解答非常容易。但你可以在线性时间 O(n) 内用一趟扫描做到吗?
要求算法的空间复杂度为 O(n) 。
你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++ 中的 __builtin_popcount )来执行此操作。

注意:本题与主站 338 题相同
【代码】
【方法1:常规法】
在这里插入图片描述

class Solution:
    def countBits(self, n: int) -> List[int]:
        ans=[]
        for i in range(n+1):
            cnt=0
            while i:
                cnt+=i&1
                i>>=1
            ans.append(cnt)
        return ans

【方法2】
在这里插入图片描述

class Solution:
    def countBits(self, n: int) -> List[int]:
        ans=[0,1]
        length=len(ans)
        while len(ans)<n+1:
            length=len(ans)
            for i in range(length):
                ans.append(ans[i]+1)
        return ans[:n+1]
rk3588 rkaiq_3A_server 无法解析json文件记录 阅读详情

相关推荐

系统动力学仿真软件Vensim下载

Vensim是由美国Ventana Systems, Inc.所开发,是采用图示化编程的方式构建系统动力学模型,上手简单。Vensim有很多系列产品,其中Vensim PLE (Personal Learning Edition)是面向个人学习者的,完全免费,可直接官网下载,截止于2022/04/10,最新的Vensim PLE版本是9.2.3。

PMIIᶜᶜ的博客 1万+

力扣OJ(5x)LCR(120+) 剑指 Offer

...

nameofcsdn的博客 5337

华为鸿蒙系统也能用!5分钟搞定谷歌三件套安装(附最新APK下载链接)

本文为华为鸿蒙系统用户提供了一份详尽的谷歌三件套(Google Play服务、商店及框架)手动安装指南。文章核心在于无需Root,通过ADB命令获取设备信息,并从可靠来源下载匹配版本的APK,按照正确顺序安装,从而解决海外应用依赖问题,实现5分钟快速部署。

c7d8e9的博客 6541

解题详解 Leetcode:剑指 Offer 22. 链表中倒数第k个节点;21. 合并两个有序链表;面试题 02.04. 分割链表; LCR 027. 回文链表;LCR 023. 相交链表 ;14

定义快慢指针,先让fast走k步,走完k步跟slow同步走,当fast走NULL时,slow即为要找的节点,返回slow即可。创作不易如果有帮助的话就请留下一个免费的赞吧!

2301_77649794的博客 393

C#开发者必备:VSPD虚拟串口快速配置指南(附汉化教程)

本文为C#开发者提供了VSPD虚拟串口的快速配置与汉化教程。详细介绍了如何安装、汉化VSPD,并创建稳定的虚拟串口对,重点讲解了如何将其集成到C#开发工作流中,使用SerialPort类进行数据通信测试、协议模拟及故障排查,有效提升硬件通信开发的效率。

weixin_29224529的博客 258

ABAQUS二次开发中创建SET

在ABAQUS中创建加载、边界条件时,需要使用set,创建set时需要使用对象集合对象中的Set函数,这个函数需要提供加入对象集合的列表,但这个对象列表好像并不能自行创建,只能通过ABAQUS各类对象集合中的findAt、getSequenceFromMask、getByBoundingSphere、getByBoundingCylinder或getByBoundingSphere函数得到,但这几个函数在直接使用PYTHON编程时都不太好用。这个函数返回一个字典,如下所示。

hohoyu的专栏 2484

《剑指Offer》笔记&题解&思路&技巧&优化 Java版本——新版leetcode_Part_2

1. LCR 129. 字母迷宫——矩阵中的路径 2. LCR 130. 衣橱整理——机器人的运动范围 3. LCR 131. 砍竹子 I——剪绳子I 4. LCR 132. 砍竹子 II——剪绳子II 5. LCR 133. 位 1 的个数——二进制中1的个数 6. LCR 134. Pow(x, n)——数值的整数次方 7. LCR 135. 报数——打印从1到最大的n位数 8. LCR 136. 删除链表的节点——删除链表的节点 9. LCR 137. 模糊搜索验证——正则表达式匹配

这里有一只小马吖 1532

Ansys疲劳仿真:工程结构寿命评估的实战方法论

做了这么多年仿真,有个感受越来越深——静力学算得再漂亮,疲劳寿命预测不对,项目照样过不了评审。不是因为理论有多复杂,而是因为疲劳损伤的物理机制本身就带有统计属性,材料内部的微观缺陷分布、应力集中位置、载荷谱的随机性,每一项都能让结果偏移20%甚至更多。本文从实战出发,梳理Ansys疲劳仿真的核心流程,重点讲清楚载荷类型选择、S-N曲线处理、应力集中修正这几个最容易出问题的环节。疲劳仿真做好了,最大的收获不是跑出一个漂亮的Damage云图,而是对结构的真实薄弱环节建立起量化的认知。

keyanxiaobaigou的博客 529

每日一题——前n个数字二进制中一的个数(高效算法)

代码越怪,跑的越快。用高效的算法解决问题!

Cooler_z的博客 806

未连接互联网的银河麒麟v10安装g++,各种报错,如何处理?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 备注:部分问题/疑难杂症搜集于互联网。

**My Coding Family** 1805

华为OD机试双机位C卷-字符串解密(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【字符串解密】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 字符串解密。

qq_45776114的博客 735

1059-前 n 个数字二进制中 1 的个数

题目如下 给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。 示例 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 的每个整数的二进

LINZEYU666的博客 2028

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

剑指 Offer II 003. 前 n 个数字二进制中 1 的个数(简单 位运算 动态规划)

剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。 示例 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 --&g

weixin_43942435的博客 283

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【leetcode刷题】68.前 n 个数字二进制中 1 的个数 ——Java版

dp

公号:一条coding 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

LeetCode 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数

LeetCode 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 文章目录LeetCode 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数题目描述一、解题关键词二、解题报告1.思路分析2.时间复杂度3.代码示例2.知识点总结 题目描述 给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。 示例 1: 输入: n = 2 输出: [0,1,1] 解释: 0 --> 0 1 --> 1 2 -->

Datao_csdn的博客 624

【leetcode】剑指offer专项突击版详解(C++)

题目所在链接: leetcode剑指offer专项突击版 1. 整数 剑指 Offer II 002. 二进制加法 class Solution { public: string addBinary(string a, string b) { int carry = 0; string res; int i = a.size() - 1; int j = b.size() - 1; while(i >= 0 ||

froot的博客 3167

【剑指 Offer II】 3 前 n 个数字二进制中 1 的个数

题目 链接【剑指Offer】 003 前 n 个数字二进制中 1 的个数 描述 给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。 输入与输出 输入: n = 2 输出: [0,1,1] 解释: 0 --> 0 1 --> 1 2 --> 10 思路 题不难,看看应该就会了。 硬核解法 遍历 0 到 n; 分别求出 0 到 n 中 二进制 1 的个数; 加入到数组中即可。 找规律解法 由此可以发现规律 当前

就这样吧 324

[剑指offer专项突击版-Java解法]剑指 Offer II 003. 前 n 个数字二进制中 1 的个数

剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 题目描述 给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。 示例 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 --&g

叶落雨飘的博客 219
上一篇: 【动态规划-简单】面试题 17.16. 按摩师
下一篇: 【动态规划-简单】1137. 第 N 个泰波那契数(手写推导过程)
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值