算法day6---找出数组出现一次的数

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;
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 [] reArr=new int[maxLen];
for (int i = 0; i < len; i++) {
for (int j = 0; j < maxLen; j++) {
if (j>= kRadix[i].length)
reArr[j]+=0;
else
reArr[j]+=(kRadix[i][j]-'0');
}
}
int res=0;
for (int i = 0; i < maxLen; i++) {
res+=(reArr[i]%k)*(int)(Math.pow(k,i));
}
System.out.println(res);
}
数组的数转成3进制做不进位加法,数组只有9出现一次,其余出现3次,其余做不进制加法都为0
k个相同的k进制数做不进制加法,结果为0
答案:

 

posted @   开源遗迹  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示