zoukankan      html  css  js  c++  java
  • 【Offer】[56-2] 【数组中唯一只出现一次的数字】

    题目描述

      在一个数组中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字

    [牛客网刷题地址]无

    思路分析

      如果一个数字出现三次,那么它的二进制表示的每一位(0或者1)也出现三次。如果把所有出现三次的数字的二进制表示的每一位都分别加起来,那么每一位的和都能被3整除。我们把数组中所有数字的二进制表示的每一位都加起来。如果某一位的和能被3整除,那么那个只出现一次的数字二进制表示中对应的那一位是0;否则就是1。

    测试用例

    1. 功能测试:唯一只出现一次的数字分别是0、正数、负数;重复出现三次的数字分别是0、正数、负数。

    Java代码

    public class Offer056_02 {
        public static void main(String[] args) {
            test1();
            test2();
            test3();
            
        }
    
        public static int findNumberAppearingOnce(int[] array) {
            return Solution1(array);
        }
    
    
        private static int Solution1(int[] array) {
            if(array==null || array.length<=0) {
                return -1;
            }
            
            int[] bitSum = new int[32];
            for(int i=0;i<array.length;i++) {
                int bitMask = 1;
                for(int j=31;j>=0;j--) {//将每个数字的每一位存储到bitSum中,并且对应的位相加
                    int bit = array[i] & bitMask;
                    if(bit!=0) {
                        bitSum[j]+=1;
                    }
                    bitMask = bitMask<<1;
                }
            }
            
            int result =0;
            for(int i=0;i<32;i++) {
                result = result<<1;
                result += bitSum[i]%3;
            }
            
            return result;
        }
    
        private static void test1() {
            int[] array = {1,1,1,4,5,4,4,2,2,2};
            System.out.println(findNumberAppearingOnce(array)); 
        }
    
        private static void test2() {
    
        }
        private static void test3() {
    
        }
    
    }
    

    代码链接

    剑指Offer代码-Java

  • 相关阅读:
    mysql六:数据备份、pymysql模块
    mysql五:索引原理与慢查询优化
    mysql四:数据操作
    sql查询作业答案
    mysql四-2:多表查询
    mysql四-1:单表查询
    mysql五补充部分:SQL逻辑查询语句执行顺序
    mysql三-3:完整性约束
    mysql三:表操作
    mysql三-2:数据类型
  • 原文地址:https://www.cnblogs.com/haoworld/p/offer562-shu-zu-zhong-wei-yi-zhi-chu-xian-yi-ci-de.html
Copyright © 2011-2022 走看看