将一个数字加到存储在数字数组中的数字

萨迪克·侯赛因·汗

给定一个非负数,表示为数字数组,数字加一个。

这些数字被存储,使得最高有效数字在列表的开头。

例:

给定表示123的[1,2,3],返回[1,2,4]。

给定表示999的[9,9,9],返回[1,0,0,0]。

我的代码不适用于输入[9,8,7,6,5,4,3,2,1,0],输出仅为[9]

谁能告诉我为什么?

public class Solution {
    /**
    * @param digits a number represented as an array of digits
    * @return the result
    */
    public int[] plusOne(int[] digits) {
        // Write your code here
        float n = 0;
        for(int i = 0; i < digits.length; i++) {
            n = n*10 + digits[i];
        }
        n++;
        String s = Float.toString(n);
        s = s.substring(0, s.indexOf("."));
        int l = s.length();
        int result[] = new int[l];
        for(int i = 0; i < l; i++) {
            result[i] = Integer.parseInt(Character.toString(s.charAt(i)));
        }
        return result;
    }
}
亚诺斯

对于输入[9,8,7,6,5,4,3,2,1,0],n此代码后的值

float n = 0;
for(int i = 0; i < digits.length; i++) {
    n = n*10 + digits[i];
}
n++;

...是9.8765435E9。然后,继续进行此操作的子字符串,直到小数点为9,因此结果为9。

如果将类型n更改floatlong,并使用将其转换为字符串,效果会更好Long.toString

但是创建n,添加1,然后转换为String,然后转换为数组的整个方法很尴尬,容易出错,并且不能与较大的数组一起使用,因为它会受到整数溢出的影响,除非您更改nto的类型。BigInteger该解决方案不会通过任何测试或编程采访。

考虑一下这种更简单的选择,它可以处理任意多个数字(在数组大小允许的情况下),而不必担心整数溢出:

public int[] plusOne(int[] digits) {
    for (int i = digits.length - 1; i >= 0; --i) {
        digits[i]++;
        if (digits[i] < 10) {
            return digits;
        }
        digits[i] = 0;
    }
    int[] result = new int[digits.length + 1];
    System.arraycopy(digits, 0, result, 1, digits.length);
    result[0] = 1;
    return result;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从数字数组中获取一个数字

在数组中查找更高和更低的数字并存储在一个数组中

将一个数字加到一个数组中以完成一组数字

在数组中定位一个数字

在数组中查找小于或等于另一个数组中数字的数字?

用ruby实现的算法,将一个数字加到表示为数组的数字上

获取可变深度数组中的第一个数字数组

将大于某个值的数字存储到另一个数组中

在matplotlib中仅连接一个数字数组

如果它是数字数组中的第十个数字,则在PHP中标记或标记一个数字值

将整数数组中的数字连接成Golang中的一个数字?

C#将数组中的上一个数字添加到下一个

在数组中的两个数字之间存储数字

是否可以将1000万个数字存储在数组中?

Keras可以不加一个数字数组而产生一个标量吗?

我在reactjs中有一个秒表,如何将每个数字添加到某种数组中以显示每个数字?

如何计算一个数字出现在数组中的次数

如何检查一个数字是否已经在数组中?

在数组的整数元素中搜索一个数字

打印出一个数字在数组中重复的次数(ArrayIndexOutofBoundException)

如何使一个函数接受一个数字数组并给出小于70的数字?

将数字存储在数组中,C ++

如何从数组中以块的形式存储数字并创建另一个数组或列表?

将数字分割成一个数组

给定一个数字数组,返回所有其他数字的乘积数组(无除法)

如何在数字数组中添加某个数字?

在R中重新编码:将2个数字数据行转换为一个因子行

在数组中查找一个数字,该数字是线性时间中任何其他数字的两倍

在数组中存储数字