LeetCode#2-Java-两数相加

博主开始在LeetCode上通过刷题来巩固Java基础和熟悉语法,目标是提升到能用Java开发应用软件。文章详细记录了解决链表相加问题的过程,从初始的整数溢出,到使用大整数处理,再到最终理解进位逻辑。代码实现中,博主逐一处理了两链表同时存在、仅一链表存在和极端情况(进位)的场景。
摘要由CSDN通过智能技术生成

今天开个新坑,做LeetCode刷题,目的是巩固下Java基础的用法,以及熟悉Java语法,能用Java实现大部分已会算法,然后最终能用Java开发出实际应用型软件。

emm,意图明显,本着就业和以后的考研去的。
python也会持续的跟进,明年3月份之前,CSAPP,java,python,视觉处理这些希望都能到达一个新的高度。新的起点吧!加油。
###思路
Java第一次用啊……不咋熟,不过和C++用法上还是很相似的,
①这个题一开始我就正常写,没想到爆了个int上限,(我先把两个链表的和求出来在给新的listnode 逐位插入)。
②然后就搞了一下BigInter,寻思这下没跑了,结果头文件没有设置BigInter,
③合着就是让你写个进位的逻辑呗。
④思路就是两链表都有当前位时,逐位求和,重置进位位,next
⑤只有单链表存在时,那就是进位位和当前位求和,重置进位位,next
⑥极端情况
9999999
1
如果最后剩了一个进位,那就在加入一个节点即可。
没啥难度,我还错那么多发,我是fv

###代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
      ListNode ans = new ListNode(0);
        ListNode ret = ans;
        int bits=0;
        while(l1!=null&&l2!=null){
            int tmp=(l1.val+l2.val+bits);
            if(tmp>=10)bits=1;
            else bits=0;
            tmp%=10;
            ans.next = new ListNode(tmp);
            ans=ans.next;
            l1=l1.next;
            l2=l2.next;
        }
        while(l1!=null) {
            int tmp = l1.val + bits;
            if (tmp >= 10) {
                bits = 1;
            } else bits = 0;
            tmp %= 10;
            ans.next = new ListNode(tmp);
            ans = ans.next;
            l1 = l1.next;
        }
        while(l2!=null){
            int tmp=l2.val+bits;
            if(tmp>=10){
                bits=1;
            }
            else bits=0;
            tmp%=10;
            ans.next = new ListNode(tmp);
            ans=ans.next;
            l2=l2.next;
        }
        if(bits==1)
            ans.next=new ListNode(1);
        return ret.next;
    
    
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值