zoukankan      html  css  js  c++  java
  • LeetCode | 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

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
     //整理思路与昨天的add binary非常类似,程序结构也一样
     //注意此处list是倒序存储数字的,即低位在左,高位在右
     //故只需要正向遍历相加,并维护进位即可
    public class Solution {
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    	
    	if(l1 == null) return l2;
    	if(l2 == null) return l1;
    	
    	ListNode cur_1 = l1;
    	ListNode cur_2 = l2;
    	
    	ListNode head = new ListNode(0);   //返回head.next,避免了在循环中加额外判断
    	ListNode cur  = head;              //用作指针
    	
    	int carry = 0;                     //进位
    	
    	while(cur_1!=null && cur_2!=null){
    		int sum = cur_1.val + cur_2.val + carry;
    		int digit = sum % 10;
    		carry = sum / 10;
    		
    		ListNode newNode = new ListNode(digit);
    		cur.next = newNode;
    		
    		cur = cur.next;
    		cur_1 = cur_1.next;
    		cur_2 = cur_2.next;
    	}
    	
    	while(cur_1 != null){              //当list 1还有剩余节点
    		int sum = cur_1.val + carry;
    		int digit = sum % 10;
    		carry = sum / 10;
    		ListNode newNode = new ListNode(digit);
    		cur.next = newNode;
    		cur = cur.next;
    		cur_1 = cur_1.next;
    	}
    	while(cur_2 != null){             //当list 2还有剩余节点
    		int sum = cur_2.val + carry;
    		int digit = sum % 10;
    		carry = sum / 10;
    		ListNode newNode = new ListNode(digit);
    		cur.next = newNode;
    		cur = cur.next;
    		cur_2 = cur_2.next;
    	}
    	
    	if(carry > 0){                   //容易忽略的错误:最高位仍有进位时,要额外新增一位
    		ListNode newNode = new ListNode(carry);
    		cur.next = newNode;
    	}
    	
    	return head.next;        
        }
    }



  • 相关阅读:
    添加了tabBar之后就不能使用wx.navigateTo跳转页面
    nodejs的安装及创建项目
    人名币转大写
    C#后台去除HTML标签
    自动化测试中excel的使用
    ddt方法介绍
    requests返回值
    requests提供的get方法,有几个常用的参数
    serveragent组件含义
    jmeter使用PerfMon Metrics Collector的图表分析
  • 原文地址:https://www.cnblogs.com/dosmile/p/6444441.html
Copyright © 2011-2022 走看看