求最右边的第一个1的数组
来源:互联网 发布:php中级面试题 编辑:程序博客网 时间:2024/06/15 11:57
求一个字节(8位)表示的数字中查找最右边第一个非0的数字的位置,该数组如何解析呢?
static const uint8 rightmost_one_pos[256] = { 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0};
解析:此数组对应了8位,也就是一个字节的数字对应的最右边非0的第一个bit的位置。
对应数组【0~7】位。
假如:00000000,没有最右边的,对应数组组下标为0
00000001,最右边非0为第1个数,对应数组下标为1
00000010,最右边非0为第2个数, 对应数组下标为2
00000011,最有表非0为第1个数,对应数组下标为3
00000100,最右边非0为第3个数,对应数组下标为4
……
可以看出来,数组中下标对应的数字比我们计算的小1。
会在后来讲解。
所以,此数组中保存的数字,使我们计算的最右边非0的数字的结果。
0 0
- 求最右边的第一个1的数组
- 求一个数组中右边第一个比他大的数(单调栈)
- 求一个数组中右边第一个比他大的数(单调栈)
- 用栈来实现求数组中每个元素的左边第一个小和右边第一个小 -2014-03-26 20:35
- 找出数组中每个数的右边第一个比它大的数
- 获取数组元素中右边第一个大于该元素的值
- 平面n个点 求从最左边点到最右边点再返回的最短路长 uva 1347
- 求数组中第一个无重复的元素
- 搜索字符串右边起的第一个匹配字符
- UITableView 右边索引第一个出现空白情况的解决办法
- 求右边区间的最大值
- (HDU1061||nefu783)&&nefu 66 求N^N的最右边和最左边的数
- HDU 1060 1061求 n^n 最左边 最右边的数字
- [算法]给一个满二叉树,求最底层最右边的节点
- 杭电ACM1061N^N求最右边的数的问题
- 杭电ACM1061N^N求最右边的数的问题
- 求一个字符串在另一个字符串中最右边的位置
- hdu--2522 求1/n的第一个循环节
- 入驻CSDN
- ORA-00845: MEMORY_TARGET not supported on this system
- springMVC和ckeditor图片上传
- MySQL性能优化的20条经验
- Laravel5 关联查询 —— 多级一对多的实现
- 求最右边的第一个1的数组
- 【Git之窗】(六)A successful Git branching model
- PAT A1118. Birds in Forest
- 按键短按长按连发双击
- SQL优化(一)
- 为何黑马PHP口碑能远超同行,揭秘某内幕团队,从未曝光,删前速看
- linux环境下oracle 11g 静默安装
- PHP链表
- Android中Handler使用浅析