算法分析
-
1、若
t1
表示第一个数当前位数的大小,t2
表示第二个数当前位数的大小,next
表示进位数 -
2、从个位数开始进行相加,使用
t
记录(t1 + t2 + next)
得出的结果,t % 10
为该位数确定好的元素,进行下一个位数操作时,需要t /= 10
时间复杂度 $O(n)$
参考文献
参考y总的模版归纳:https://www.acwing.com/blog/content/277/
Java 代码
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static List<Integer> add(List<Integer> A,List<Integer> B )
{
if (A.size()<B.size()) return add(B,A);
int t = 0;
for (int i = 0; i < A.size(); i ++ )
{
t += A.get(i);
if (i < B.size()) t += B.get(i);
A.set(i, t % 10);
t /= 10;
}
if (t!=0) A.add(t);
return A;
}
public static void main(String[] args) {
//传进两个字符串
Scanner scan = new Scanner(System.in);
String a = scan.next();
String b = scan.next();
List<Integer> A = new ArrayList<Integer>();
List<Integer> B = new ArrayList<Integer>();
for (int i = a.length() - 1; i >= 0; i -- ) A.add(a.charAt(i) - '0');
for (int i = b.length() - 1; i >= 0; i -- ) B.add(b.charAt(i) - '0');
List<Integer> C = add(A, B);
for (int i = C.size() - 1; i >= 0; i -- ) System.out.print((C.get(i)));
}
}
bigdecimal
有些算法题目禁止使用BigInteger
嗯嗯
不是有Big Integer嗎 直接使用這個類 JAVA
是有这个东西