我应该以{{1}}的形式添加两个数字,
例如
array
向后的原因是因为我们需要从这个地方开始。我无法确定数组的大小应该是什么。
839 as an array, {9,3,8}
2039 {9,3,0,2}
这就是我目前所拥有的,但数组的大小是问题所在。我觉得我已经尝试了所有的事情,但是我很高兴。
答案 0 :(得分:0)
实际上无法在不执行添加的情况下确定结果的精确大小;所有你真正知道的事实是 Math.max(x.length, y.length)
或 Math.max(x.length, y.length) + 1
。
所以,我认为有三种方法:
Math.max(x.length, y.length) + 1
,并接受有时会有额外的前导零。
x
和y
中前导零的数量,以及从你的总数中扣除。这最终会造成不必要的复杂恕我直言。Math.max(x.length, y.length) + 1
并进行添加,然后如果最重要的数字变为零,您可以然后分配Math.max(x.length, y.length)
并复制除了零之外的一切。 (您可能希望使用java.lang.System.arraycopy(...)
。)答案 1 :(得分:0)
如果使用Integer对象而不是基本int,则可以执行以下操作。
Integer x = 1234;
x.toString().length();
答案 2 :(得分:0)
这个怎么样?
public static int[] add(int[] x, int[] y) {
int[] z = new int[x.length + y.length];
int i = 0;
for (int j = 0; i < x.length || i < y.length || j > 0; i++) {
int sum = (i < x.length ? x[i] : 0) + (i < y.length ? y[i] : 0) + j;
z[i] = sum % 10;
j = sum / 10;
}
// return Arrays.copyOf(z, i);
int[] res = new int[i];
System.arraycopy(z, 0, res, 0, res.length);
return res;
}