• Add Two Numbers


    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 class Solution {
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            if(l1 == null) return l2;
            if(l2 == null)  return l1;
            int plus = 0;
            ListNode dummy = new ListNode(0);
            ListNode cur = dummy;
            while(l1 != null && l2 != null)
            {
                int val = plus + l1.val + l2.val;
                if(val >= 10)
                {
                    ListNode node = new ListNode(val-10);
                    cur.next = node;
                    plus = 1;
                }
                else
                {
                    ListNode node = new ListNode(val);
                    cur.next = node;
                    plus = 0;
                }
                l1 = l1.next;
                l2 = l2.next;
                cur = cur.next;
            }
            while(l1 != null)
            {
                int val = plus + l1.val;
                if(val >= 10)
                {
                    ListNode node = new ListNode(val-10);
                    cur.next = node;
                    plus = 1;
                }
                else
                {
                    ListNode node = new ListNode(val);
                    cur.next = node;
                    plus = 0;
                }
                l1 = l1.next;
                cur = cur.next;
            }
            while(l2 != null)
            {
                int val = plus + l2.val;
                if(val >= 10)
                {
                    ListNode node = new ListNode(val-10);
                    cur.next = node;
                    plus = 1;
                }
                else
                {
                    ListNode node = new ListNode(val);
                    cur.next = node;
                    plus = 0;
                }
                l2 = l2.next;
                cur = cur.next;
            }
            if(plus != 0)
            {
                ListNode node = new ListNode(1);
                cur.next = node;
            }
            return dummy.next;
        }
    }
    View Code

    学习之处:

    • 思路很简单,不过有两个地方可以进行简化,使代码看起来更加整洁 carry的获得方法,可以改成如下所示:
      int sum = carry + l1.val + l2.val;
      point.next = new ListNode(sum % 10);
      carry = sum / 10;
  • 相关阅读:
    Python自动发送邮件(可带附件)
    unittest单元测试(测试报告生成)
    unittest编写Web测试用例
    unittest跳过测试和预期失败
    unittest的discover方法使用
    Remote使用出现的问题及解决办法
    汇总篇--学习及练习过程中遇到过的问题
    webdriver--单选、复选及下拉框的定位
    webdriver--定位一组元素+iframe表单切换
    webdriver--设置元素等待
  • 原文地址:https://www.cnblogs.com/sunshisonghit/p/4387048.html
Copyright © 2020-2023  润新知