前些天面试,面试官问如何在Java里得到两个非常大的数相乘的结果:
这两个数都超出了现有数据类型的长度,
他们现在用字符串存储着。
后面他提示用数据结构知识,设计一种新的存储结构来存储和计算。虽然在C语言中学过数据结构,但是我一直对数据结构在Java中如何应用不是很理解,请大家指导。希望能够得到该题目的解答,和java数据结构知识的指导。谢谢大家了~
这两个数都超出了现有数据类型的长度,
他们现在用字符串存储着。
后面他提示用数据结构知识,设计一种新的存储结构来存储和计算。虽然在C语言中学过数据结构,但是我一直对数据结构在Java中如何应用不是很理解,请大家指导。希望能够得到该题目的解答,和java数据结构知识的指导。谢谢大家了~
或者不用分治法,那么把它存入数组,然后模拟小学的乘法运算
如果非要扯上java的数据结构,那就用LinkList或StringBuilder
不需要多维数组,比如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};
用这样的方式来存储数据
比如要存储123456789009876543211234567890098765432112345678900987654321这个数字,
用你的方法好像只是把每个数字单独拆开来了,
int[] a = {1,2...,0,0,9,8,7,...};
是这样吗?如果是一个完整的长数,还是存不下。
所谓数据结构就是数据存储加算法
采用某种结果来保存数据,并提供相应的算法来处理数据