• 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;
    		    }


  • 相关阅读:
    PMAC运动程序例程(一)
    【译】移动王国的诱惑【经济学人】
    粒子生物学【经济学人】
    快到家了【经济学人】
    关于贝加莱Modbus通讯的总结
    关于贝加莱Modbus通讯的总结
    移动王国的诱惑【经济学人】
    什么是Modbus
    动物精神【经济学人】
    什么是Modbus
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3896681.html
Copyright © 2020-2023  润新知