137. Single Number II
来源:互联网 发布:易语言编程有哪些书 编辑:程序博客网 时间:2024/06/05 07:08
137. Single Number II
题目
给出一个整数数组,除了其中一个只出现一次,其他每一个元素都出现3次。找出那个出现一次的元素。
注意:
你的算法需要有线性时间复杂度。能不用额外空间来实现吗?
代码块
class Solution { public int singleNumber(int[] nums) { int rst = 0; for(int i = 0; i < 32; i++){ int count = 0; for(int j = 0; j < nums.length; j++){ if(((nums[j] >> i) & 1) == 1){//统计第i位有几个1 count ++; count = count % 3; } } if(count != 0){ rst |= (count << i); } } return rst; } public static void main(String[] args) { int[] nums = {1,1,1,2,2,2,3}; System.out.println(singleNumber(nums)); }}
代码分析
按位运算。每一位都是0或1,将每个元素的每一位都进行相加,然后模3,得到的余数就是单数的相应位。
然后再用十进制表示出来。
根据别的解析来看:第i个位置上所有数字的和对3取余,那么只会有两个结果 0 或 1 (根据题意,3个0或3个1相加余数都为0)。 因此取余的结果就是那个 “Single Number”。最直接的方法就是用大小为 32的数组来记录所有位上的和。
参考:
1.http://blog.csdn.net/derrantcm/article/details/47745445
2.以及相关的位运算。
阅读全文
0 0
- 137.Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- Python 面试问答 Top 25
- 公开课 | Python在运维开发中的运用
- JPA
- scrapy在win10上安装(py3)
- Linux--根文件系统的解释
- 137. Single Number II
- 类型转换操作符函数
- 学习makefile的一个工程示例
- 源码安装GCC
- 100%完美友盟分享
- 前端游戏引擎CreateJS与PixiJS之比较
- session一致性架构设计实践
- 李宏毅机器学习2016 第三讲 梯度下降
- [NLP-关键词提取]关于nlp的一些实践