注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
本帖最后由 TonyJang 于 2014-9-20 13:02 编辑
- public static LinkedList<Integer> sum2(LinkedList<Integer> list1, LinkedList<Integer> list2){
- int length1 = list1.size();
- int length2 = list2.size();
- if(length1!=length2){
- LinkedList<Integer> shortList = length1>length2 ? list2:list1;
- for(int i = Math.abs(length1- length2); i>0; i--){
- shortList.addFirst(0);
- }
- }
- LinkedList<Integer> ret = new LinkedList<Integer>();
- int p= sumHelper(ret,list1,list2);
- if(p!=0)
- ret.addFirst(p);
- return ret;
- }
- private static int sumHelper(LinkedList<Integer> result,LinkedList<Integer> list1, LinkedList<Integer> list2){
- if(list1.isEmpty())
- return 0;
- int sum = list1.poll()+list2.poll()+sumHelper(result,list1,list2);
- result.addFirst(sum%10);
- return sum/10;
- }
复制代码 已1->4->6 + 2->7->9=4->2->5为例,
①sum=1+2+sumHelper(result,list1,list2);
②sum=4+7+sumHelper(result,list1,list2);
③sum=6+9+sumHelper(result,list1,list2);
之后list1为空,return 0;返回③,sum=15,result变成5,return 进位1,进入②
sum=4+7+1=12,result变成2,return进位1,进入①
sum=1+2+1=4......
文科生转CS,吐出老血啊,共勉吧
想问一下第五行,LinkedList<Integer> shortList = length1>length2 ? list2:list1;如果list1短一些,那么把list1的内容copy给shortlist,之后shortlist空余位置补0,这样会改变list1的值吗?如果list1或者list2不空位置补0,那么sumHelper(LinkedList<Integer> result,LinkedList<Integer> list1, LinkedList<Integer> list2)这个函数没意义啊
|