zoukankan      html  css  js  c++  java
  • 《程序员代码面试指南》第七章 位运算 在其他数都出现k 次的数组中找到只出现一次的数

    题目

    在其他数都出现k 次的数组中找到只出现一次的数
    

    java 代码

    package com.lizhouwei.chapter7;
    
    /**
     * @Description: 在其他数都出现k 次的数组中找到只出现一次的数
     * @Author: lizhouwei
     * @CreateDate: 2018/4/28 21:20
     * @Modify by:
     * @ModifyDate:
     */
    public class Chapter7_6 {
    
        public int getOnceNum(int[] arr, int k) {
            int[] eo = new int[32];
            for (int i = 0; i < arr.length; i++) {
                int[] kSys = getKSysNum(arr[i], k);
                for (int j = 0; j < eo.length; j++) {
                    eo[j] = (eo[j] + kSys[j]) % k;
                }
            }
            return getFromKSysNum(eo, k);
    
        }
    
        public int[] getKSysNum(int value, int k) {
            int[] res = new int[32];
            int index = 0;
            while (value != 0) {
                res[index++] = value % k;
                value = value / k;
            }
            return res;
        }
    
        public int getFromKSysNum(int[] eo, int k) {
            int res = 0;
            for (int i =eo.length-1; i>-1; i--) {
                res = res * k + eo[i];
            }
            return res;
        }
    
        //测试
        public static void main(String[] args) {
            Chapter7_6 chapter = new Chapter7_6();
            int[] arr = {1, 1, 2, 3, 3, 4, 4, 5, 5};
            int reslt = chapter.getOnceNum(arr,2);
            System.out.print("{1,1,2,3,3,4,4,5,5}中");
            System.out.println("只出现一次的数为:" + reslt);
        }
    }
    

    结果

  • 相关阅读:
    2073: [POI2004]PRZ
    BZOJ 3669: [Noi2014]魔法森林
    Dominator Tree & Lengauer-Tarjan Algorithm
    BZOJ 3526: [Poi2014]Card
    BZOJ 2733: [HNOI2012]永无乡
    BZOJ 2929: [Poi1999]洞穴攀行
    BZOJ 3730: 震波
    BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡
    BZOJ 1195: [HNOI2006]最短母串
    BZOJ 4030: [HEOI2015]小L的白日梦
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/8969708.html
Copyright © 2011-2022 走看看