zoukankan      html  css  js  c++  java
  • Add Two Numbers

    题目

    You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8

    方法

    链表的遍历,仅仅须要一遍就可以。
    		    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    		        ListNode head=null;
    		        ListNode last = null;
    		        int flag = 0;
    		        while(l1!=null&&l2!=null){
    		            int temp;
    		            temp = l1.val + l2.val + flag;
    		            if (temp >= 10) {
    		            	temp = temp - 10;
    		            	flag = 1;
    		            } else {
    		            	flag = 0;
    		            }
    		            
    		            if(head == null){
    		            	head = new ListNode(temp);
    		            	last = head;
    		            }else{
    		                ListNode cur = new ListNode(temp);
    		                last.next = cur;
    		                last = cur;
    		            }   
    		            l1 = l1.next;
    		            l2 = l2.next;
    		        }
    		        
    		        while(l1 != null){
    		            if(flag == 1){
    		                int temp = l1.val + 1;
    		                if(temp >= 10){
    		                    flag = 1;
    		                    temp = temp -10;
    		                }else{
    		                    flag = 0;
    		                }
    		                
    		                if(head == null){
    		                	head = new ListNode(temp);
    		                	last = head;
    		                }else{
    		                    ListNode cur = new ListNode(temp);
    		                    last.next = cur;
    		                    last = cur;
    		                } 
    		                l1 = l1.next;
    		            }else{
    		            	last.next = l1;
    		                break;
    		            }
    		        }
    		        while(l2 != null){
    		            if(flag == 1){
    		                int temp = l2.val + 1;
    		                if(temp >= 10){
    		                    flag = 1;
    		                    temp = temp -10;
    		                }else{
    		                    flag = 0;
    		                }
    		                
    		                if(head == null){
    		                	head = new ListNode(temp);
    		                	last = head;
    		                }else{
    		                    ListNode cur = new ListNode(temp);
    		                    last.next = cur;
    		                    last = cur;
    		                } 
    		                l2 = l2.next;                
    		            }else{
    		            	last.next = l2;
    		                break;
    		            }
    		        }
    		        if(flag == 1){
    		            ListNode lnTemp = new ListNode(1);
    		            last.next = lnTemp;
    		        }
    		        return head;
    		    }


  • 相关阅读:
    web字体
    解决input之间的空隙
    CSS基础:text-overflow:ellipsis溢出文本
    css3控制内容的可选择性
    设置dt height 保证dd在同一行
    extjs Ext.Ajax.request 同步和异步
    jquery 同步和异步请求
    freemarker 基础
    freemarker简单使用示例
    【数据结构】线性表顺序结构的操作---C/C++语言
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3896681.html
Copyright © 2011-2022 走看看