Java小方法
JAVA 两整型数组按位相加返回整型数组
学习Leecode时写的一些有些意义的小方法,本来不想造轮子,结果发现没人这么想过
这个方法有一个好处,这个能存很大很大的数
代码
@SuppressWarnings("unchecked")
public static int[] arrayAddByBit(int[] arr1, int[] arr2) {
int[] arr3 = null;
int[] arr4 = null;
if (arr1.length > arr2.length) {
arr3 = arr1;
arr4 = arr2;
} else {
arr3 = arr2;
arr4 = arr1;
}
@SuppressWarnings("rawtypes")
ArrayList l1 = new ArrayList();
@SuppressWarnings("rawtypes")
ArrayList l2 = new ArrayList();
@SuppressWarnings("rawtypes")
ArrayList l3 = new ArrayList();
for (int i = 0; i < arr3.length; i++) {
l1.add(arr3[i]);
}
for (int i = 0; i < arr4.length; i++) {
l2.add(arr4[i]);
}
for (int i = 0; i < l1.size(); i++) {
if (i < l2.size()) {
int j = (int) l1.get(i) + (int) l2.get(i);
l3.add(j);
} else {
l3.add(l1.get(i));
}
}
//这里对是否进位,如果不需要进位
for (int i = 0; i < l3.size(); i++) {
if ((int) l3.get(i) > 9 && i != l3.size() - 1) {
l3.set(i, (int) l3.get(i) % 10);//可修改进制
l3.set(i + 1, (int) l3.get(i + 1) + 1);
}
}
//这里对是否进位,如果需要进位
if ((int) l3.get(l3.size() - 1) > 9) {
l3.set(l3.size()-1, (int) l3.get(l3.size()-1)%10);//可修改进制
l3.add(1);
}
int[] re = new int[l3.size()];
for (int i = 0; i < l3.size(); i++) {
re[i] = (int) l3.get(i);
}
return re;
}