//在其他数都出现k次的数组中找到只出现一次的数
public class GetNumOne{
//获得只出现一次的数
public static int OneceNum(int[]arr,int k)
{
int[]e0=new int[32];
for(int i=0;i<arr.length;i++)
{
setCurExc(e0,arr[i],k);
}
//k进制的数转换成十进制的数
int cur=GetNumFromKNum(e0,k);
//System.out.println();
return cur;
}
//获得中间的步骤,获得只出现一次的k进制数
public static void setCurExc(int[]e0,int value,int k)
{
int[]res=getKNumFromNum(value,k);
for(int i=0;i<e0.length;i++)
{
e0[i]=(e0[i]+res[i])%k;
}
}
//将十进制的整数转换成k进制的数
public static int[] getKNumFromNum(int value,int k)
{
int[]res=new int[32];
int index=0;
while(value!=0)
{
res[index++]=value%k;
value=value/k;
}
return res;
}
//将k进制的数转换成的十进制的整数
public static int GetNumFromKNum(int[]e0,int k)
{
int res=0;
for(int i=e0.length-1;i>=0;i--)
{
res=res*k+e0[i];
}
return res;
}
public static void main(String []args)
{
//System.out.println("Hello");
int[]arr={1,1,1,2,2,2,3};
int k=3; //k表示其他数出现的次数
System.out.println(OneceNum(arr,k));
}
}
在其他数都出现k次的数组中找到只出现一次的数
最新推荐文章于 2022-12-31 10:11:13 发布