• 9.链式A+B


    题目描述

    有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。

    给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。

    测试样例:
    {1,2,3},{3,2,1}
    返回:{4,4,4}

    代码如下:
    import java.util.*;
    /*
    public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }*/
    public class Plus {
        public ListNode plusAB(ListNode a, ListNode b) {
                int len1=0,len2=0;
             ListNode p=a,q=b,c=null;
              while(p!=null){
                  len1++;
                  p=p.next;
                  
               }
              while(q!=null){
                  len2++;
                  q=q.next;
                  
               }
             p=a.next;q=b.next;
              int value=(a.val+b.val)%10;
              int carry=(a.val+b.val)/10;
              if(len1>=len2){
                  c=a;
              }else{
                  c=b;
              }
              c.val=value;
              ListNode tmp=c.next;
              ListNode flag=c;
              while(p!=null && q!=null){
            	  int m=(p.val+q.val+carry)/10;
            	  int n=(p.val+q.val+carry)%10;
                  carry=m;
                  tmp.val=n;
                  if(tmp.next==null) flag=tmp;
                  tmp=tmp.next;
                  p=p.next;
                  q=q.next;
              }
             if(p!=null){
                 while(p!=null){
                      tmp.val=(p.val+carry)%10;
                      carry=(p.val+carry)/10;
                      if(tmp.next==null) flag=tmp;
                      tmp=tmp.next;
                      p=p.next;
                  }
                 
             }else if(q!=null){
                 while(q!=null){
                      tmp.val=(q.val+carry)%10;
                      carry=(q.val+carry)/10;
                      if(tmp.next==null) flag=tmp;
                      tmp=tmp.next;
                      q=q.next;
                  }
                 
             }
              if (carry==1){
                     ListNode newE=new ListNode(1);
                     newE.next=null;
                     flag.next=newE;
                 }
           return c;
           
             
                
        }
    }
    

      

  • 相关阅读:
    JavaScript原型、闭包、继承和原型链等等总结
    JS创建对象的几种方式整理
    js中 给json对象添加属性和json数组添加元素
    JSON 数组
    httpclient封装
    java 数字和日期处理
    jmeter所有版本下载路径
    idea的使用
    Java环境的搭建
    Axure8.0可用的授权码
  • 原文地址:https://www.cnblogs.com/mlz-2019/p/4758856.html
Copyright © 2020-2023  润新知