面试题:找出数组中只出现一次的数字(二)
2015-08-27 22:36
417 查看
难度:中等
一个整数数组,除了一个数之外所有数字都出现了3次,找出这个数字来。
注意: 你的算法应该是线性运行复杂度,且不能使用额外内存空间。
答案:
一个整数数组,除了一个数之外所有数字都出现了3次,找出这个数字来。
注意: 你的算法应该是线性运行复杂度,且不能使用额外内存空间。
答案:
public class Solution { public int singleNumber(int[] nums) { int ones = 0, twos = 0, threes = 0; for (int i = 0; i < nums.length; i++) { // twos holds the num that appears twice twos |= ones & nums[i]; // ones holds the num that appears once ones ^= nums[i]; // threes holds the num that appears three times threes = ones & twos; // if num[i] appears three times // doing this will clear ones and twos ones &= ~threes; twos &= ~threes; } return ones; } }
相关文章推荐
- 面试题:找出数组中只出现一次的数字
- 面试常见知识点
- [面试技巧]16个经典面试问题回答思路
- 黑马程序员——Java基础之集合框架
- 一道经典的笔试面试题考考大家
- 阿里 Java面试 知识点
- LintCode-判断字符串是否没有重复字符
- 《剑指Offer》面试题12:打印1到最大的n位数
- 黑马程序员——Java基础---IO(一)
- iOS程序员面试题系列(2)
- lintCode-删除链表中倒数第n个节点
- 面试常见问题
- 优雅的程序员
- Binary Tree Zigzag Level Order Traversal——关于广度优先的经典面试题
- 21道工作中总结的iOS高频面试题
- 黑马程序员--对象和方法之间的关系
- iOS程序员面试题系列(1)
- 美团面试算法题
- 黑马程序员_集合框架(二)
- Java常见面试题