【轉(zhuǎn)載】面試題 02.05. 鏈表求和

題目鏈接

代碼來自

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        
        ListNode p1 = l1, p2 = l2, result = new ListNode(0);
        ListNode p = result;
        int carr = 0;
        
        while(p1 != null || p2 != null || carr > 0)
        {
            int sum = carr;
            sum += p1 == null ? 0 : p1.val;
            sum += p2 == null ? 0 : p2.val;
            
            p.next = new ListNode(sum % 10);
            p = p.next;
            
            carr = sum / 10;
            
            if(p1 != null)
                p1 = p1.next;
            if(p2 != null)
                p2 = p2.next;
        }
        return result.next;
    }

改進代碼

    public ListNode addTwoNumbers( ListNode l1 , ListNode l2 ){
        //目標鏈
        ListNode result = new ListNode( 0 );
        //指向目標鏈的可操作鏈(因為不能破壞原來的鏈)
        ListNode p = result;
        int sum = 0;
        //只要兩條鏈中有一條鏈不為空,或者結(jié)果還有進位。就要一直循環(huán)
        while( l1 != null || l2 != null || sum > 0){
            //兩個鏈的值,直接相加
            sum += l1 == null ? 0 : l1.val;
            sum += l2 == null ? 0 : l2.val;
            //取得末尾的數(shù)字,并且將其拋棄,形如  345 -> 34
            p.next = new ListNode( sum % 10 );
            p = p.next;
            
            sum = sum / 10;
            
            if( l1 != null ){
                l1 = l1.next;
            }
            if( l2 != null ){
                l2 = l2.next;
            }
        }
        return result.next;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容