前些天面试,面试官问如何在Java里得到两个非常大的数相乘的结果:
这两个数都超出了现有数据类型的长度,
他们现在用字符串存储着。
    后面他提示用数据结构知识,设计一种新的存储结构来存储和计算。虽然在C语言中学过数据结构,但是我一直对数据结构在Java中如何应用不是很理解,请大家指导。希望能够得到该题目的解答,和java数据结构知识的指导。谢谢大家了~

解决方案 »

  1.   

    可以使用递归分治,请你google“大数相乘”
    或者不用分治法,那么把它存入数组,然后模拟小学的乘法运算 
      

  2.   

    我也觉得这题跟数据结构关系不大,倒是与算法紧密相关。
    如果非要扯上java的数据结构,那就用LinkList或StringBuilder
      

  3.   


    不需要多维数组,比如123,可以存储为 int[] a = {1,2,3};
    123 + 456 
    int[] a = {1,2,3};
    int[] b = {4,5,6};
    int[] c = add(a, b) = {5,7,9};
    用这样的方式来存储数据
      

  4.   

    嗯,不太理解你的意思。想了下,刚刚我说的那种思路也行不通。
    比如要存储123456789009876543211234567890098765432112345678900987654321这个数字,
    用你的方法好像只是把每个数字单独拆开来了,
    int[] a = {1,2...,0,0,9,8,7,...};
    是这样吗?如果是一个完整的长数,还是存不下。
      

  5.   

    这个题的解答基本没什么问题了,但我还是不理解Java数据结构是如何应用到的。望指点~
      

  6.   

    java的数据结构,可以采用BigDecimal或BigInteger
    所谓数据结构就是数据存储加算法
    采用某种结果来保存数据,并提供相应的算法来处理数据