Single Number II

原创 2013年12月05日 20:13:11

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?

//Single Number类似使用位运算,不过这里借助一个数组,将每位进行处理!

//通过一个32数组---为什么是32位呢?因整形是32

//可以这样来定const int size= sizeof(A[0]) * 8;//模拟三进制位的运算,最后记得把所有单独的位在合并起来 。时间复杂度o(n),空间O(1)

int singleNumber(int A[], int n) {
        
        const int size = sizeof(A[0])*8;//可写32
        char element[size]; //char 数组模拟 整形3进制用
        int result = 0;//第一次未初始化报错!
        memset(element,0,sizeof(char)*size);
        
        for(int i=0;i<n;i++)
            for(int j=0;j<size;j++) // 模拟3进制,处理相应的位
            {
                element[j]+=(A[i]>>j)&0x01; //处理第i位,通过移位得到
                element[j] %= 3;//每一位某3运算,从而实现3进制
            }
        
        for(int k=0;k<size;k++)//合并  --- 最后将各个位合起来
        result|=(element[k]<<k);
        
    return result;
    }


//有人说可以先排序,之后在处理不过排序在O(nlgn)之间!与题目O(n)不合,不过这种观念应该经常在大脑里闪现!


版权声明:本文为博主原创文章,未经博主允许不得转载。

single-number、single-number2,数组中只出现一次的数字

题目描述:single-number1 一个数组中除了一个数字外,其余数字均出现两次,找出只出现一次的数字。 要求线性复杂度 方法:两个相同的数字异或得0,一个数字和0异或结果是它本身。 pu...
  • jingsuwen1
  • jingsuwen1
  • 2016年05月27日 20:17
  • 280

【LeetCode-面试算法经典-Java实现】【137-Single Number II(只字出一次的数字II)】

【137-Single Number II(只出现一次的数字II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given an array of integers, ...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月18日 06:24
  • 3925

关于Single Number II的一些讨论

关于 Single Number II 这一题,我在讨论区中发现了这样一段代码,简直让人眼前一亮。但是关于思路,作者却没有多说一句话,只留下两眼放空的我。讨论地址:challenge-me-thx ...
  • rqy1994
  • rqy1994
  • 2016年08月31日 22:31
  • 152

leetcode中Single Number II的一个通用解法

用数电中设计逻辑电路的方法解Single Number II
  • kkmnobj
  • kkmnobj
  • 2015年04月30日 10:07
  • 830

Single Number II——系列题目的翻译

题目: Given an array of integers, every element appears three times except for one. Find that single o...
  • zcliatb
  • zcliatb
  • 2015年01月05日 15:19
  • 662

Majority Number II——算法练习

No.1-2 Majority Number II Given an array of integers, the majority number is the number that occur...
  • lxf_44944
  • lxf_44944
  • 2015年02月13日 14:46
  • 825

异或巧用:Single Number

异或巧用:Single Number 今天刷leetcode,碰到了到题Single Number,觉得解答很巧妙,故记之。。。 题目: Given an array of integers, eve...
  • yangyao_iphone
  • yangyao_iphone
  • 2015年07月01日 11:09
  • 560

LeetCode 260 Single Number III(只出现一次的数字 III)(*)

原文给定一个数字数组nums,其中有两个元素只出现一次,而其他所有元素均出现两次。找出这两个只出现一次的元素。例如:给定nums = [1, 2, 1, 3, 2, 5],返回[3, 5]。备注: 1...
  • NoMasp
  • NoMasp
  • 2016年02月18日 15:06
  • 4435

Single Number II 除了一个元素外其他元素都出现3次 @LeetCode

第一种方法好想,第二种要用到bit vector package Level3; import java.util.Hashtable; import java.util.Set; /** ...
  • hellobinfeng
  • hellobinfeng
  • 2013年11月09日 00:40
  • 6565

寻找只出现一次的数字(LeetCode: Single Number II)

原题:Given an array of integers, every element appears three times except for one. Find that single on...
  • nlgshw
  • nlgshw
  • 2015年01月28日 19:30
  • 423
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Single Number II
举报原因:
原因补充:

(最多只允许输入30个字)