bit 相关问题笔记

1. Counting Bits

Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1‘s in their binary representation and return them as an array.

Example:
For num = 5 you should return [0,1,1,2,1,2].

思路: 主要考察二进制数性质的, 即如果A/2 = B, 那么A比B多了一位, 并且A和B出了A的二进制的右边的一位以外其他都一样, 举个栗子A = 11, 二进制就是1011, B = 5, 二进制是101, 所以我们可以看出其最左边是相等的, 只有A的最后一位不等.

那么我们可以得出一个结论, 如果A/2  = B, 那么A有多少个1取决于B有多少个1和A最右边一位二进制数是0还是1. 如果A最右边一位是1, 那么A比B多一个1, 否则他们具有相等的1.

1 public class Solution {
2     public int[] countBits(int num) {
3         int[] vec = new int[num + 1];
4         for(int i =1; i <= num; i++)
5             vec[i] = vec[i/2] + i%2;
6         return vec;
7     }
8 }

时间: 2024-08-23 14:02:40

bit 相关问题笔记的相关文章

黑马程序员---Objective-C基础学习---类、对象、方法相关知识笔记

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 类.对象.方法相关知识笔记 Objective-C相对于C语言有了面向对象的特性,但是ObjC又没有其他面向对象语言那么多语法特性,ObjC本身对面向对象进行了精简.下面是一些相关知识笔记. 类定义 成员变量 方法和属性 self关键字 类定义 在C#.Java等其他高级语言中定义一个类是相当简单点的,直接一个关键字class加一对大括号基本就完成了,但是在ObjC中类的定义相对变化比较大.现

《深入Linux内核架构》附录A&lt;体系结构相关知识&gt;笔记

A.1 概述 为便于扩展到新的体系结构,内核严格隔离了体系结构相关和体系结构无关的代码.内核中特定于处理器的部分,包含定义和原型的头文件保存在include/asm-arch/(例如,include/asm-arm/)目录下,而C语言和汇编程序源代码实现则保存在arch/arch/(例如,arch/arm/)目录下. 联编系统也考虑到一般代码可能需要借助于特定于体系结构的机制.所有特定于处理器的头文件都位于include/asm-arch/.在内核配置为特定的体系结构之后,则建立符号链接incl

mysql主从复制配置我相关操作笔记

1.安装mysql yum install mysql-server mysql-devel 2.启动mysql service mysqld start //启动 service mysqld restart //重启 service mysqld stop //停止 service --status-all | grep mysqld //查看mysql服务状态 3.创建mysql账号 mysqladmin -u root password '123' 4.进入mysql mysql -ur

习题相关的笔记JS(一)

1:遍历(迭代方法):每个方法都会传入单个参数:数组项的值(item),该项在数组中的位置(index)和数组本身(Array): 方法不同返回值也不同: every():可以用来做比较,返回boolean值 filter():会返回满足条件(true)的项组成的数组. foreach():遍历数组内的数,没有返回值: map()对数组中的每一项都运行给定的函数,再输出执行过函数之后的数组: some():只要有一个满足条件就返回true: 2:button不过不设置type的话在某些浏览器上会

Linux相关知识笔记

Quagga要在linux下编译并配置运行,所有,学习一点linux的基础知识. 安装的Ubuntu,用户名linux,密码1 使能Ubuntu的IP转发功能,需要修改etc/sysctl.conf和etc/ufw/sysctl.conf中IP转发的设置,只需移去注视符号#即可 # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 # Uncomment this to allow

Ubuntu相关的笔记

1.Ubuntu更新系统的命令: sudo apt-get update sudo apt-get dist-upgrade 2.Ubuntu设置不启动图形界面(http://blog.sina.com.cn/s/blog_66439a3e0101dkef.html): 修改grub配置文件/boot/grub/grub.cfg,将此文件中的quiet splash修改成quiet splash text(保留启动画面)或quiet text(无启动画面) 3.安装curl sudo apt-g

jmeter相关学习笔记(分布式1)

在1.4G Hz-3GHz 的CPU .1GB 内存的 JMeter 客户端上,可以处理线程 100-300.但是 Service 例外.XML处理是 CPU 运算密集的,会迅速消耗掉所有的CPU .一般来说,以XML技术为核心的应用系统,其性能将是普通Web应用的 10%-25% .另外,如果所有负载由一台机器产生,网卡和交换机端口都可能产生瓶颈,所以一个JMeter 客户端线程数不应超过 10 0 .采用JMeter 远程模式并不会比独立运行相同数目的非GUI 测试更耗费资源.但是,如果使用

tp5 数据库相关操作笔记

这里如何连接多个数据库? 1,在conif.php文件中添加一个数据库配置(把database.php文件内容复制一份过来),这里取名为db2 2,在控制器的方法中使用 mysql中的参数绑定 mysql中占位符绑定 增删改查? 1 , 原生增删改查在TP中 直接使用Db::execute('原生语言') 2, 通过查询构造器实现增删改查 2.1 增 注意:如果想利用配置里面的表前缀 2.2 删 2.3 改 2.4 查 建议的查询方式? 特色查询? 1,如果如果某字段存的是时间戳,可以直接按照时

MYSQL相关完整笔记

useradd mysql -s /sbin/nologin cat/etc/passwd | grep mysqlcat /etc/group | grep mysql 源目录 cd /usr/src/mysq cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/var/lib/mysql -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE