美文网首页
Single Number

Single Number

作者: 会飞的猪姥姥 | 来源:发表于2016-05-09 11:08 被阅读0次

Given an array of integers, every element appearstwice except for one. Find that single one.

给出一个整形数组,所有的数字都出现两次,只有一个出现一次。


解决方案 1:

思路: 利用 ^ 操作,对于整数x,y来说,x^y = y^x,x ^ x = 0,0^x = x。将数组的所有整数全部做^操作,结果为出现一次的那个数。

代码:

public class Solution {

         public int singleNumber(int[] numbers) {

                  int element = 0;

                  for (int i = 0; i < numbers.length; i++) {

                            element = element ^ numbers[i];

                   }

                 return element;

          }

}


解决方案 2:

思路: 

int 型为4字节,32bit,如果将所有数字看作二进制数字,对应的位相加,得bitSum,然后对bitSum取模2,bitSum为出现一次的数字的对应位。得到这个数字的所有位,就可以恢复这个数字。

代码:

public class Solution {

        public int singleNumber(int[] numbers) {

                   int result = 0;

                    for (int i = 0; i  < 32; i++) {

                              int bitSum = 0;

                               for (int j = 0; j < numbers.length; j++) {

                                           bitSum += (numbers[j] >> i) & 1;

                               }

                               result |= (bitSum % 2) << i;

                   }

                    return result;

         }

}


总结:

方案一利用了此问题的特殊性,运用异或操作解决问题。

方案二具有一般性,此方法可以扩展为,数组中每个元素出现K次,除了一个元素出现一次的问题形式。

相关文章

  • 一篇文章搞懂面试中leetcode位操作算法题

    Single Number落单的数 落单的数 IISingle Number II Single Number I...

  • single number

    题目描述 给定一个整数数组,除了一个元素外,每个元素都会出现两次。找到那一个出现一次的元素。注意:时间复杂度O(n...

  • Single number

    用异或

  • Single Number

    题目要求找出在算法的时间复杂度为线性时间,且不占据额外的内存 下面讲解算法:该算法主要用到了位运算中的异或运算^,...

  • Single Number

    Single Number 今天是一道有关位运算的题目,来自LeetCode(#136),难度为Medium,Ac...

  • Single Number

    Problem Given an array of integers, every element appears...

  • Single Number

    Given an array of integers, every element appearstwiceexc...

  • Single Number

    Given an array of integers, every element appearstwiceexc...

  • Single Number

    按位亦或可求解,复杂度为O(n)

  • Single Number

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single...

网友评论

      本文标题:Single Number

      本文链接:https://www.haomeiwen.com/subject/rkcerttx.html