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);
        }
    }
    

    结果

  • 相关阅读:
    BZOJ2870 最长道路
    BZOJ1316 树上的询问
    BZOJ2238 Mst
    BZOJ4242 水壶
    [BeiJing2010组队]次小生成树Tree
    CODEVS1403 新三国争霸
    牛客网NOIP赛前集训营-提高组(第六场) C-树
    JSOI2008 最小生成树计数
    BZOJ2654 Tree
    牛客网NOIP赛前集训营-提高组(第六场)B-选择题
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/8969708.html
Copyright © 2011-2022 走看看