小编Fif*_*a89的帖子

我应该使用什么数据结构来创建自己的"BigInteger"类?

作为一个可选的赋值,我正在考虑编写自己的BigInteger类实现,在那里我将提供自己的加法,减法,乘法等方法.

这将是任意长整数,甚至数百位长.

在对这些数字进行数学计算时,逐位数字并不难,您认为最好的数据结构代表我的"BigInteger"是什么?

起初我正在考虑使用一个数组,但后来我认为在一次大的加法或乘法之后我仍然可能会溢出(用完数组插槽).这是一个使用链表的好例子,因为我可以处理O(1)时间复杂度的数字?

是否有一些其他数据结构甚至比链表更适合?我的数据结构所保存的类型应该是我可用的最小可能整数类型吗?

另外,我应该小心如何存储我的"carry"变量?它本身应该是我的"BigInteger"类型吗?

c++ java biginteger data-structures

13
推荐指数
1
解决办法
3632
查看次数

如何创建我在Java中创建的数据类型的副本?

如果我有课:

public class MyType  
{  
    private List<Integer> data;  
    private boolean someFlag;

    public MyType(List<Integer> myData, boolean myFlag)
    {
        this.data = myData;
        this.myFlag = someFlag; 
    } 
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我创建一个MyType实例,我该如何对其进行深层复制呢?我不希望新对象指向旧引用,而是一个全新的实例.

这是我应该实现Cloneable接口的情况,还是用于浅拷贝?

我不能这样做:

MyType instance1 = new MyType(someData, false);  
MyType instance2 = new MyType(instance1.getData(), instance1.getFlag());
Run Code Online (Sandbox Code Playgroud)

我担心MyType的新实例指向其"data"变量的相同引用.所以我需要完全复制它.

所以,如果我有一个现有的对象:

MyType someVar = new MyType(someList, false);

// Now, I want a copy of someVar, not another variable pointing to the same reference.
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?

java

3
推荐指数
2
解决办法
762
查看次数

标签 统计

java ×2

biginteger ×1

c++ ×1

data-structures ×1