Single Number

原创 2015年11月18日 11:16:18

参考的文章http://www.cnblogs.com/changchengxiao/p/3413294.htmlhttp://blog.csdn.net/jiadebin890724/article/details/23306837
对于Single Number1
o(n)的算法只能是线性扫描一遍,可能的相法是位运算。对于异或来说:
1. 异或运算是可交换,即 a ^ b = b ^ a
2. 0 ^ a = a
那么如果对所有元素做异或运算,其结果为那个出现一次的元素,理解是a1 ^ a2 ^ ….,可以将所有相同元素交换至相邻位置,首先运算相同元素,则会产生(n - 1)/2个0异或积,剩余一个单一元素,他们的异或积为这个单一元素自己,得解。

#include<stdio.h>
int singleNumber(int* nums, int numsSize) {
        if(numsSize<1){
                return 0 ;
        }
        int result = 0 ;
        for(int i=0;i<numsSize;i++){
                result = result ^ nums[i] ;
        }
        return result;
}
int main(){
        int nums[] = {1,3,3,4,2,1,4} ;
        int result = singleNumber(nums,7) ;
        printf("%d\n",result) ;
        return 0 ;
}

Single Number II
int 数据共有32位,可以用32变量存储 这 N 个元素中各个二进制位上 1 出现的次数,最后 在进行 模三 操作,如果为1,那说明这一位是要找元素二进制表示中为 1 的那一位。代码如下:

#include<stdio.h>
int singleNumber(int* nums, int numsSize) {
        int count[32] = {0} ;
        int result = 0 ;
        for(int i=0;i<32;i++){
                for(int j=0;j<numsSize;j++){
                        count[i] =count[i]+ ((nums[j]>>i)&1) ;
                }
                result = result | ((count[i]%3)<<i) ;
        }
        return result ;
}
int main(){
        int nums[] = {2,2,3,2} ;
        int result = singleNumber(nums,4) ;
        printf("%d\n",result) ;
        return 0 ;
}

136. Single Number [medium] (Python)

题目链接https://leetcode.com/problems/single-number/题目原文 Given an array of integers, every element app...
  • coder_orz
  • coder_orz
  • 2016年07月29日 14:30
  • 1519

LeetCode 136:Single Number I

Single Number Given an array of integers, every element appears twice except for one. Find tha...
  • sunao2002002
  • sunao2002002
  • 2015年05月12日 19:51
  • 3087

LeetCode 137:Single Number II

Given an array of integers, every element appears three times except for one. Find that single one. ...
  • sunao2002002
  • sunao2002002
  • 2015年06月01日 22:36
  • 5020

LeetCode || Single Number II

Single Number II  Total Accepted: 12144 Total Submissions: 37399My Submissions Given an ...
  • jiadebin890724
  • jiadebin890724
  • 2014年04月09日 23:35
  • 18964

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

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

SINGLE NUMBER I & II & III

Single Number I : Given an array of integers, every element appears twice except for one. Find th...
  • lcj_cjfykx
  • lcj_cjfykx
  • 2015年09月17日 22:26
  • 1866

LeetCode(137)Single NumberII

题目如下: Given an array of integers, every element appears three times except for one. Find that single...
  • feliciafay
  • feliciafay
  • 2014年02月09日 10:15
  • 3028

【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
  • 4173

Single Number (Java)

Given an array of integers, every element appears twice except for one. Find that single one. Not...
  • tofu_jelly
  • tofu_jelly
  • 2015年01月04日 16:49
  • 286

LeetCode 136 — Single Number(C++ Java Python)

题目:http://oj.leetcode.com/problems/single-number/ Given an array of integers, every element appears ...
  • dragon_dream
  • dragon_dream
  • 2014年02月20日 15:43
  • 3938
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Single Number
举报原因:
原因补充:

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