zoukankan      html  css  js  c++  java
  • Leecode-两数相加

    class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
    }
    public class Solution {

    public Solution() {}
    // TODO Auto-generated constructor stub



    static public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    //伪代码:
    //设置一个哑节点re_head保持结果链表。
    //curr1,curr2初始化为l1,l2的头结点
    //初始化carry为0
    //使用curr1,curr2遍历两个链表l1,l2
    //sum=curr1+curr2+carry。curr1或curr2为空节点则在本公式运算中取值为0。
    //根据sum的个位上的数建立结果链表当前节点。根据sum的十位上的数决定是否有进位,有进位carry为1。
    //遍历结束,carry为1,在结果链表末尾再增加一节点。
    //


    ListNode head1=l1;
    ListNode head2=l2;

    ListNode re_head = new ListNode(0);
    ListNode re_curr = re_head;

    ListNode curr1 = head1;
    ListNode curr2 = head2;
    int carry =0;//进位
    while(curr1 !=null|| curr2!=null){
    //System.out.println("curr1.val"+curr1.val);
    //System.out.println("curr2.val"+curr2.val);
    int sum=0;
    if(curr1 !=null){
    sum += curr1.val;
    }
    if(curr2 !=null){
    sum += curr2.val;
    }
    sum += carry;
    if(sum>9)
    {
    carry =1;
    re_curr.next = new ListNode(sum-10);
    } else{
    carry = 0;
    re_curr.next = new ListNode(sum);
    }
    //陷阱:在while的条件下,curr1或curr2可能为null
    if(curr1 != null){
    curr1= curr1.next;
    }

    if(curr2 != null){
    curr2 = curr2.next;
    }
    re_curr = re_curr.next;
    }
    if(carry ==1){
    re_curr.next = new ListNode(1);
    }


    //输出re链表
    re_curr = re_head.next;
    do{
    System.out.print(re_curr.val);
    re_curr = re_curr.next;
    if(re_curr != null){
    System.out.print(" -> ");
    }
    }while(re_curr != null);
    return re_head.next;

    }


    public static void main(String[] args) {
    // TODO Auto-generated method stub
    ListNode l1=new ListNode(8);
    l1.next=new ListNode(1);
    ListNode l2=new ListNode(0);
    Solution.addTwoNumbers(l1, l2);

    }

    }

  • 相关阅读:
    多态的使用
    抽象类与具体类
    对象应该长什么样子
    方法的重载overload
    遵守合约:覆盖的规则
    Android 自定义Dialog
    less 之Extend 及 Extend all用法
    github常见错误整理!
    js获取元素宽高
    解决 Error: Access denied for user 'root'@'localhost' (using password: YES)
  • 原文地址:https://www.cnblogs.com/yexia/p/11027950.html
Copyright © 2011-2022 走看看