DAY 06 一个数组里面的数要么出现一次 要么出现3次 将出现1次的数输出
规律:
2个相同的二进制的数采用不进位加法得0
10个相同的十进制数采用不进位加法得0
k个相同的k进制数采用不进位加法得0
public class Day06 {
public static void main(String[] args){
int[] arr={2,2,2,9,7,7,7,3,3,3,6,6,6,0,0,0};
int len=arr.length;
char[][] kRadix=new char[len][];//用来存每个数的三进制 一行为一个数的三进制形式
int k=3;
//转化成k进制字符数组
int maxlen=0;
for (int i=0;i<len;i++){
kRadix[i]=new StringBuilder(Integer.toString(arr[i],k)).reverse().toString().toCharArray();//翻转为了后面便于转化为十进制
if (kRadix[i].length>maxlen)
maxlen= kRadix[i].length;
}
int[] resArr=new int[maxlen];
for (int i=0;i<len;i++){
//不进位加法
for (int j=0;j<maxlen;j++){
if (j>=kRadix[i].length)
resArr[j]+=0;
else
resArr[j]+=(kRadix[i][j]-"0");//kRadix位字符数组 做差转化为数字
}
}
int res=0;
for (int i=0;i<maxlen;i++){
res+=(resArr[i]%k)*(int)(Math.pow(k,i));//最后转化为十进制 *3^i
}
System.out.println(res);
}
}