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


  • 相关阅读:
    工作一年感想
    launcher项目踩坑小结(1)
    滕王阁序
    PC端/移动端常见的兼容性问题总结
    Java中逻辑&和短路&&,逻辑|和短路||的区别
    Linux常用指令和系统管理命令总结
    Ajax学习笔记
    js放大镜特效
    《Python for Data Science》笔记之着手于数据
    Python2&3学习中遇到的坑
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3896681.html
Copyright © 2011-2022 走看看