/**
* Created by lxw, liwei4939@126.com on 2017/11/2.
* 在其他数都出现K次的数组中找到只出现一次的数
*/
public class kSysNumOnce {
public int onceNum(int[] arr, int k){
int[] eO = new int[32];
for (int i=0; i< arr.length; i++){
setExclusive(eO, arr[i], k);
}
int res = getNumFromKSysNum(eO, k);
return res;
}
public void setExclusive(int[] eO, int value, int k){
int[] curKSysNum = getKSysNumFromNum(value, k);
for (int i=0; i< eO.length; i++){
eO[i] = (eO[i] + curKSysNum[i]) % k;
}
}
//将一个数转化为k进制数组,逆序放置
public int[] getKSysNumFromNum(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 getNumFromKSysNum(int[] eO, int k){
int res = 0;
for (int i = eO.length -1; i > -1; i--){
res = res * k + eO[i];
}
return res;
}
}
在其他数都出现K次的数组中找到只出现一次的数
最新推荐文章于 2023-03-10 08:08:34 发布