【LeetCode】SingleNumberII_137
来源:互联网 发布:东华his数据库 编辑:程序博客网 时间:2024/05/08 02:00
package com.leetCode;/** * Given an array of integers, every element appears three times except for one. * Find that single one. * * Note: Your algorithm should have a linear runtime complexity. Could you * implement it without using extra memory? * * @author Zealot * @date 2015年7月25日 下午6:16:12 */public class SingleNumberII_137 {public int singleNumber(int[] nums) {int ones = 0, twos = 0; for(int i = 0; i < nums.length; i++){ ones = (ones ^ nums[i]) & ~twos; twos = (twos ^ nums[i]) & ~ones; } return ones;}//遍历数组中每一个元素//计算每一个元素中,2进制中每一位加到一个总的数组里边,都加到一起之后,再与3取余,因为除了一个之外,都是出现了3次,只有那一个之出现了不到3次//最后数组转成数字public int singleNumber2(int[] A) { if(A == null || A.length == 0) return 0; int[] a = new int[32]; for(int i = 0; i < A.length; i++) { for(int j = 0; j < 32; j++) { if((A[i] & (1 << j)) != 0) a[j] = (a[j] + 1) % 3; } } int result = 0; for(int i = 0; i < 32; i++) { if(a[i] > 0) result |= (a[i] << i); } return result; }public static void main(String[] args) {SingleNumberII_137 s = new SingleNumberII_137();int[] nums = {1,2,3,3,3,2,5,2,1,1};System.out.println(s.singleNumber2(nums));//System.out.println(77>>1);//System.out.println(4>>1);//System.out.println(Integer.toBinaryString(4).length());//System.out.println("123456".length());}}
0 0
- 【LeetCode】SingleNumberII_137
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- Java 中的方法重载与方法覆盖
- Note For Linux By Jes(10)- 例行性工作排程 (crontab)
- spring的propogation(传播机制)
- 赋值位置切换
- ArrayAdapter,SimpleAdapter,BaseAdapter
- 【LeetCode】SingleNumberII_137
- 初识nginx之准备工作
- 共享内存例子
- Android中的四种点击事件
- JAVA问题总结之6--强制转换损失精度分析
- R语言_回归分析
- Android UI设计——ListView控件与Adapter适配器(一)
- listview异步加载图片并防止错位
- 第47讲:Scala多重界定代码实战及其在Spark中的应用源码解析学习笔记