数组中含有n个数,其中一个数只出现1次,其余个数均出现3次,就只出现1次的数。
首先应该想到的就是计数法,先对数组排序,然后统计每个数出现的次数,找出出现次数为1个数;
更高级一点的方法还是用位运算,充分发掘数字二进制中的0和1出现的规律。一个数字是由0和1组成的,如果这个数字出现3次,那么这个数字中各个位上0和1出现的次数也应该是3次。按照这样统计数组中所有数的各个位1的个数,如果个数是1个倍数,这所求数字该位不为1。
举例如下:
数组: 1, 3, 1, 5, 1, 6, 5, 6, 6, 5
对应的...
分类:
其他好文 时间:
2014-06-20 12:45:44
阅读次数:
185
数组含有n个数,其中有一个数只出现1次,其余的数都出现两次,求只出现一次的数。 这个主要考察的是位运算中的异或运算的性质-----当两个相等的数做异或运算他们的值为0(a^a = 0)。本题中对数组中所有的数做异或,那么最后异或的结果就是只出现1次的数。思想很简单代码如下:...
分类:
其他好文 时间:
2014-06-20 10:02:03
阅读次数:
281
二进制原码:最高位为符号位,0为正 1为负正数的原码 反码 补码
都是相同的反码:负数的反码为原码符号位不变 其它对应变化(1变0 0变1)补码:等于 反码+13^-3 =?运算过程-3 10000000 00000000
00000000 00000011 原码11111111 11111111 ...
分类:
其他好文 时间:
2014-06-11 11:08:34
阅读次数:
156
原文地址:http://graphics.stanford.edu/~seander/bithacks.html有本书叫hack‘s
delight也是主讲位运算的。下面正文开始翻译吧,不定时更新。声明:如无特殊说明,所有的代码段都是不受版权限制的,如果喜欢,大家可以随便使用。文章内容由Sean
E...
分类:
其他好文 时间:
2014-06-11 10:29:59
阅读次数:
338
先要了解一下C语言里全部的位运算都是指二进制数的位运算。即使输入的是十进制的数,在内存中也是存储为二进制形式。 “=0。
功能:将整型数a按二进制位向左移动m位,高位移出后,低位补0。 “>>”使用方法:
格式是:a>>m,a和m必须是整型表达式,要求m>=0。 功能:将整型数a按二进制位向右移动m...
分类:
编程语言 时间:
2014-06-11 07:15:45
阅读次数:
242
Hadoop 的优势Hadoop 是 一 个 能 够 让 用 户 轻 松 架 构 和 使 用 的 分
布 式 计 算 平 台。 用 户 可 以 轻 松 地 在Hadoop 上开发执行处理海量数据的应用程序。它主要有下面几个长处:1.高可靠性。Hadoop
按位存储和处理数据的能力值得人们信赖。2.高...
分类:
其他好文 时间:
2014-06-09 15:48:27
阅读次数:
201
该文章及后续文章均为阅读《C陷阱和缺陷》后的读数笔记,方便以后回顾
C陷阱和缺陷电子版图书下载地址:点击打开链接
第一章词法陷阱
1.1 = 不同于 ==
在C语言中,符号=作为赋值运算符,符号==作为比较运算符。一般而言,赋值运算相对比较运算出现得更频繁,因此字符数较少的符号=就被赋予更常用的含义——赋值操作。在编写程序的时候,注意不要将赋值操作写完比较相等的操作,也不要将比较操作写为赋值操作。
1.2 & 和 | 不同于 && 和 ||
在C语言中,&和|为按位运算符,它们对操作数的处理方式是将其视...
分类:
其他好文 时间:
2014-06-07 11:34:14
阅读次数:
243
Implement
pow(x,n).要点:1、注意n是正数还是负数2、当n是负数时,注意n最小值时的处理方法:INT_MIN的绝对值比INT_MAX大1;3、当n为0时,任何非零实数的0次方都是14、尽量使用移位运算来代替除法运算,加快算法执行的速度。5、x取值为0时,0的正数次幂是1,而负数次幂...
分类:
其他好文 时间:
2014-06-06 15:52:27
阅读次数:
274
if(i&1==1) 表示 如果是 奇数 则。。。i&1 -- 按位与运算,取
2进制整数 i 的最低位,如果最低位是1 则得1,如果最低位是0 则得0。 奇数 i 的最低位 是1,偶数i 的最低位
是0。负数二进制表示:计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码,补码=反码+...
分类:
其他好文 时间:
2014-06-05 20:43:53
阅读次数:
317
/*天下文章一大抄,你抄我抄大家抄,只是学习笔记,别介意
~>_>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。
按位右移。将一个运算量的各位(二进制表示)依次右移若干位,低位被移出,高位对无符号数补0,对有符号数要按...
分类:
其他好文 时间:
2014-06-01 12:14:52
阅读次数:
242