小编Ren*_*zov的帖子

是否有一个有效的整数分区算法,有限的零件数量?

我必须创建一个采用两个整数的方法,让它们成为nm,并返回有多少种方法来求和m正数n.例如,像这样的方法调用partition(6, 2)应返回3,因为有3种方法可能.他们是5 + 1,4 + 23 + 3.顺便说一句,4 + 2是相同的2 + 4,因此该方法不应将它们视为两个不同的变体.有人知道这个问题的解决方案吗?

更新:nm不大于150.

java algorithm math partitioning numbers

11
推荐指数
1
解决办法
3267
查看次数

如何将红黑BST转换为数组?

我想将红黑BST转换成阵列,但出了点问题,我无法弄清楚是什么.以下是我用来执行此操作的代码片段:

public T[] toArray() {
    T[] array = (T[]) Array.newInstance(clazz, count);

    inOrder(root, array, 0);

    return array;
}

private void inOrder(Node<T> node, T[] array, int i) {
    if (node != null) {
        inOrder(node.leftChild(), array, i);
        array[i++] = node.data();
        inOrder(node.rightChild(), array, i);
    }
}
Run Code Online (Sandbox Code Playgroud)

在按照升序从10到200插入数字后,输出看起来像这样(我使用preorder遍历来查看树是否保持平衡):

[80, 40, 20, 10, 30, 60, 50, 70, 120, 100, 90, 110, 140, 130, 160, 150, 170, 180]
Run Code Online (Sandbox Code Playgroud)

但是当我调用toArray()方法时,我得到了这个:

80 120 140 160 170 180 null null null null null null null null null null …
Run Code Online (Sandbox Code Playgroud)

java red-black-tree data-structures

4
推荐指数
1
解决办法
335
查看次数