题解 | #链表相加(二)#

链表相加(二)

https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head1 ListNode类 
     * @param head2 ListNode类 
     * @return ListNode类
     */
    public ListNode addInList (ListNode head1, ListNode head2) {
        // write code here
        int len1 = 0;
        int len2 = 0;
        ListNode cur1 = head1;
        ListNode cur2= head2;
        ArrayList<Integer> arr = new ArrayList<Integer>();
        while(cur1!=null){
            len1++;
            cur1 = cur1.next;
        }
        while(cur2!=null){
            len2++;
            cur2 = cur2.next;
        }
        //让cur1是较长的那一个
        if(len1>=len2){
            cur1 = head1;
            cur2 = head2;
        }else{
            int temp = len1;
            len1 = len2;
            len2 = temp;
            cur1 = head2;
            cur2 = head1;
        }
        int n = 0;
        while(n<len1-len2){
            n++;
            arr.add(cur1.val);
            cur1 = cur1.next;
        }
        while(cur1!=null && cur2!=null){
            arr.add(cur1.val+cur2.val);
            cur1 = cur1.next;
            cur2 = cur2.next;
        }
        //cnt为0,说明不用进位,如果为1,说明需要进位
        int cnt = 0;
        for(int i=arr.size()-1;i>=0;i--){
            if(cnt==1){
                arr.set(i,arr.get(i)+1);
                cnt = 0;
            }
            if(arr.get(i)>=10){
                cnt = 1;
                arr.set(i,arr.get(i)-10);
            }
        }
        
        ListNode dummyNode = new ListNode(0);
        ListNode cur = dummyNode;
        for(int i=0;i<arr.size();i++){
            ListNode temp = new ListNode(arr.get(i));
            cur.next = temp;
            cur = cur.next;
        }
        if(cnt==1){
            ListNode temp = new ListNode(1);
            ListNode c = dummyNode.next;
            dummyNode.next = temp;
            temp.next = c;
        }
        return dummyNode.next;
        
    }
}

全部评论

相关推荐

03-12 21:51
门头沟学院 C++
pdd卡怎么严吗&nbsp;笔试a出来两道,第三题a出来20%直接给挂了😭😭😭
鳍足目:我a了2.5道也挂了,但是组里同学只a了1.6道进面了,而且我和他都是无实习,本硕同校,感觉全是玄学
投递拼多多集团-PDD等公司10个岗位 > 拼多多求职进展汇总
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务