LeetCode 热门100题 2.两数相加

在这里插入图片描述
在这里插入图片描述

public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        int[] num1=ListToArray(l1);
        int[] num2=ListToArray(l2);
        int i1=arrayToInt(num1);
        int i2=arrayToInt(num2);
        int result=i1+i2;
        int[] numResult=IntToArray(result);
        return headAdd(numResult);
    }


    public int[] ListToArray(ListNode l){
        ArrayList<Integer> num=new ArrayList<Integer>();
        int length=0;
        while(l!=null){
            num.add(l.val);
            l=l.next;
            length++;
        }
        int[] result=new int[length];
        for(int i=length-1,j=0;i>=0;i--,j++){
            result[i]=num.get(j);
        }
        return result;
    }

    //返回一个逆序int,[1,2,3]=321
    public int arrayToInt(int[] num){
        int result=0;
        for(int i=num.length-1,l=num.length;i>=0;i--,l--){
            result+=num[i]*Math.pow(10,l-1);
        }
        return result;
    }

    public int[] IntToArray(int value){
        String str=String.valueOf(value);
        int[] intArray = new int[str.length()];
        for (int i = 0; i < str.length(); i++) {
            // 遍历str将每一位数字添加如intArray
            Character ch = str.charAt(i);
            intArray[i] = Integer.parseInt(ch.toString());
        }
        return intArray;
    }

    public ListNode headAdd(int[] num){
        ListNode head=new ListNode(num[num.length-1],null);
        ListNode l=head;
        for(int i=num.length-2;i>=0;i--){
            l.next=new ListNode(num[i],null);
            l=l.next;
        }
        return head;
    }
}

思路是
1,申请一个链表长度的数组,把链表的值赋给数组。
2,把这两个数组转换为int
3,将两个数相加
4,将结果转化为数组
5,通过数组从尾部到头部遍历,用尾插法构建链表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值