加法合并鏈表

題目:

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

You may assume the two numbers do not contain any leading zero, except the number 0 itself.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

思路:

沒有要求時間空間復(fù)雜度,單純鏈表操作。而且給出了Node的定義。建一個臨時的head,指向第一個Node,根據(jù)加法算出后面的Node。再返回head.next即可。注意一些特殊情況以免漏掉一些case。

代碼:(有點(diǎn)冗余,但是勉強(qiáng)ac了)

/**
* Definition for singly-linked list.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) { val = x; }
* }
*/
class Solution {
   public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
       ListNode head = new ListNode(0);
       ListNode temp = head;
       int flag = 0;
       while(l1!=null&&l2!=null){
           if((l1.val+l2.val+flag)>9){
               temp.next = new ListNode(l1.val+l2.val-10+flag);
               temp = temp.next;
               flag = 1;
           }else {
               temp.next = new ListNode(l1.val+l2.val+flag);
               temp = temp.next;
               flag = 0;
           }
           l1 = l1.next;
           l2 = l2.next;
       }
       while(l1!=null){
           if((l1.val+flag)>9){
                temp.next = new ListNode(l1.val+flag-10);
                temp = temp.next;
                flag = 1;
           }
           else{
               temp.next = new ListNode(l1.val+flag);
                temp = temp.next;
                flag = 0;
           }
           l1 = l1.next;
          
       } 
        while(l2 !=null){
           if((l2.val+flag)>9){
                temp.next = new ListNode(l2.val+flag-10);
                temp = temp.next;
                flag = 1;
           }
           else{
               temp.next = new ListNode(l2.val+flag);
                temp = temp.next;
                flag = 0;
           }
           l2 = l2.next;
           
       }
       if(flag == 1){
           temp.next = new ListNode(1);
       }
       return head.next;
   }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,921評論 0 33
  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 11,102評論 0 23
  • 不要留戀, 春風(fēng)里的花香。 不要留戀, 夏日的一片陰涼。 不要留戀, 南飛的大雁成行。 不要留戀, 寒冬溫暖的陽光...
    李雨山閱讀 562評論 0 0
  • 本來想流逼哄哄學(xué)人家做個過程圖,還是失敗,中間擦涂顏色次數(shù)太多一不小心就手殘,不過還是有進(jìn)步,對水彩的掌控...
    窩在家的黑貓閱讀 328評論 0 0
  • RSS 是什么 百度百科給出的解釋是 簡易信息聚合(也叫聚合內(nèi)容)是一種 RSS 基于 XML 標(biāo)準(zhǔn),在互聯(lián)網(wǎng)上被...
    Forest_閱讀 2,073評論 0 0

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