zoukankan      html  css  js  c++  java
  • 题7:出现K次与出现1次

    题目描述:

      一个数组中只有一个数出现了1次,其他的数都出现了K次,请输出出现了1次的那个数。

    原理: K个相同的K进制数之间做不进位的加法,结果为0,如,2个2得0 ,10个5得0  .......

    解题思路:

      将所有的数转化成为K进制,然后做K进制的不进位加法运算,得出的结果再有K进制转换位10进制。

    解题步骤:

        第一步: 创建一个二维数组,用来保存K进制数。

        第二步:转换承K进制数组。

        第三步:进行不进位的加法运算,结果得出再resArray数组中。

        第四步:对resArray数组遍历,进行10进制转换运算。

        第五步:输出结果。  

    关键代码:

    public class 出现K次与出现1次 {
    
        public static void main(String[] args) {
            int arr[] = {2,2,2,9,7,7,7,3,3,3,6,6,6,0,0,0};
            //第一步:创建一个二维字符数组,用来保存K进制位数
            int len = arr.length;
            char ch [][] =new char[len][];
            //第二步:转换成K进制数组
            int k =3; int maxlen=0;
            for(int i=0;i<len;i++){
                //先求出每个数字K进制字符串,反转(低位对其运算)并转换为字符数组
                ch[i] = new StringBuilder(Integer.toString(arr[i],k)).reverse().toString().toCharArray();
                //更新K进制数的最大位数
                if (ch[i].length>maxlen) {
                    maxlen = ch[i].length;
                }
            }
            //第三步:进行不进位加法运算,结果得出再resArray中
            int resArray[] = new int [maxlen];
            for (int i = 0; i < len; i++) {
                for (int j = 0; j < maxlen; j++) {
                    if(j<ch[i].length){
                        resArray[j]+=(ch[i][j]-'0');
                    }else {
                        resArray[j]+=0;
                    }
                }
            }
            //第四步:对resArray数组遍历,进行10进制转换运算
            int res=0;
            for(int i=0;i<resArray.length;i++){
                res+=(resArray[i]%k)*(int)(Math.pow(k,i));
            }
            //第五步:输出结果
            System.out.println(res);
        }
    }
  • 相关阅读:
    鸟哥私房菜*基础篇(3)
    Java 基于Graphics2D绘制电子收据图片
    微信扫码支付沙盒测试,解决沙盒环境下签名验证失败
    JAVA对象合集,根据条件过滤
    java对象根据字段进行排序
    vue 弹窗调用父窗口函数
    php使用post功能,调用微信推送服务
    JS字符串截取
    关于两个 IQueryable 合并
    bootstrap清除数据源
  • 原文地址:https://www.cnblogs.com/songchengyu/p/12951980.html
Copyright © 2011-2022 走看看