博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetCode2 两数相加
阅读量:2135 次
发布时间:2019-04-30

本文共 3525 字,大约阅读时间需要 11 分钟。

 

//给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位// 数字。//// 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 //// 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 //// 示例: //// 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)//输出:7 -> 0 -> 8//原因:342 + 465 = 807// // Related Topics 链表 数学
package com.hunter.leetcode;/** * @author hunter.yang * @version 1.0 * @description null * @date 2020/10/25 16:28 */public class Solution2 {        public static class ListNode {        int val;        ListNode next;        ListNode() {}        ListNode(int val) { this.val = val; }        ListNode(int val, ListNode next) { this.val = val; this.next = next; }    }    public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {        ListNode result = new ListNode();        ListNode preNode = new ListNode();        boolean ifNeedAddOne = false;        boolean firstCal = true;        while (null != l1 || null != l2) {            ListNode node = new ListNode();            int l1Value = 0;            int l2Value = 0;            if (null != l1) {                l1Value = l1.val;            }            if (null != l2) {                l2Value = l2.val;            }            if (ifNeedAddOne) {                if (null == l1) {                    l2Value = l2Value + 1;                    node.val = gtTenLeftValue(0, l2Value);                } else if (null == l2){                    l1Value = l1Value + 1;                    node.val = gtTenLeftValue(l1Value, 0);                } else {                    l1Value = l1Value + 1;                    node.val = gtTenLeftValue(l1Value, l2Value);                }            } else {                if (null == l1) {                    node.val = gtTenLeftValue(0, l2Value);                } else if (null == l2){                    node.val = gtTenLeftValue(l1Value, 0);                } else {                    node.val = gtTenLeftValue(l1Value, l2Value);                }            }            ifNeedAddOne = judge(l1Value, l2Value);            if(firstCal) {                result = node;                firstCal = false;                preNode = result;            } else {                preNode.next = node;                preNode = node;            }            if (null != l1) {                l1 = l1.next;            }            if (null != l2) {                l2 = l2.next;            }            if (null == l1 && null == l2 && ifNeedAddOne) {                ListNode lastNode = new ListNode();                lastNode.val = 1;                preNode.next = lastNode;            }        }        return result;    }    // 判断两个数相加是否需要向前一位加1    private static boolean judge(int nodeValue1, int nodeValue2) {        if (nodeValue1 + nodeValue2 >= 10) {            return true;        } else {            return false;        }    }    private static int gtTenLeftValue(int nodeValue1, int nodeValue2) {        int sum = nodeValue1 + nodeValue2;        if (sum >= 10) {            return sum%10;        } else {            return sum;        }    }        public static void main(String[] args) {        ListNode l1 = new ListNode(9,                new ListNode(9,                        new ListNode(9,                                new ListNode(9,                                        new ListNode(9,                                                new ListNode(9,                                                        new ListNode(9)))))));        ListNode l2 = new ListNode(9, new ListNode(9, new ListNode(9, new ListNode(9))));        System.out.println(addTwoNumbers(l1, l2));    }}

 

转载地址:http://bzugf.baihongyu.com/

你可能感兴趣的文章
解决Ubuntu 64bit下使用交叉编译链提示error while loading shared libraries: libz.so.1
查看>>
VS生成DLL文件供第三方调用
查看>>
Android Studio color和font设置
查看>>
Python 格式化打印json数据(展开状态)
查看>>
Centos7 安装curl(openssl)和libxml2
查看>>
Centos7 离线安装RabbitMQ,并配置集群
查看>>
Centos7 or Other Linux RPM包查询下载
查看>>
运行springboot项目出现:Type javax.xml.bind.JAXBContext not present
查看>>
Java中多线程向mysql插入同一条数据冲突问题
查看>>
Idea Maven项目使用jar包,添加到本地库使用
查看>>
FastDFS集群架构配置搭建(转载)
查看>>
HTM+CSS实现立方体图片旋转展示效果
查看>>
FFmpeg 命令操作音视频
查看>>
问题:Opencv(3.1.0/3.4)找不到 /opencv2/gpu/gpu.hpp 问题
查看>>
目的:使用CUDA环境变量CUDA_VISIBLE_DEVICES来限定CUDA程序所能使用的GPU设备
查看>>
问题:Mysql中字段类型为text的值, java使用selectByExample查询为null
查看>>
程序员--学习之路--技巧
查看>>
解决问题之 MySQL慢查询日志设置
查看>>
contOS6 部署 lnmp、FTP、composer、ThinkPHP5、docker详细步骤
查看>>
TP5.1模板布局中遇到的坑,配置完不生效解决办法
查看>>