LeetCode演算法題 菜鳥總結 持續更新中

來源:互聯網
上載者:User

標籤:blog   etc   技巧   結果   com   更新   菜鳥   sum   指標   

  近期準備抽出一點時間,刷一些題防止手生,畢竟codemonkey,吃飯的手藝不能忘。

-------------------------------------------------分割線----------------------------------------------------------

  簡單記錄下解題時的想法和遇到的坑,如果能堅持下來以後可能還會整理整理,sasa。

1,用鏈表計算計算加法  Add Two Numbers

  對於科班出身的人對物件導向的概念都很簡單,然而在實際的編程中,由於封裝的原因,要考慮到各種奇葩的輸入,防止你的程式異常崩潰。

回到題目,例子中給的是342+465 =807;在最開始要考慮鏈表是否為空白的情況,在函數最開始進行判斷。然後依次相加進位,輸出結果。

注意:坑是在相加之後產生的進位可能會影響很多高位,例如1+999; 這種情況很容易被遺漏;

技巧: 

對於本菜鳥來說,開始的時候在初始化隊列頭部時寫的麻煩了。單獨對頭部進行相加之後才進入迴圈,因為直接進入迴圈處理不好執行個體化ListNode的時間。

然而在看過參考答案之後,為了不對頭部單獨進行判斷,可以設定無意義的head節點,最終返回的時候return head.next;

還可以通過判斷指標為空白的方法,將不一樣的長度的鏈表相加在一個while迴圈中計算,最後上代碼:

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {    ListNode dummyHead = new ListNode(0);    ListNode p = l1, q = l2, curr = dummyHead;    int carry = 0;    while (p != null || q != null) {        int x = (p != null) ? p.val : 0;        int y = (q != null) ? q.val : 0;        int sum = carry + x + y;        carry = sum / 10;        curr.next = new ListNode(sum % 10);        curr = curr.next;        if (p != null) p = p.next;        if (q != null) q = q.next;    }    if (carry > 0) {        curr.next = new ListNode(carry);    }    return dummyHead.next;}

  

LeetCode演算法題 菜鳥總結 持續更新中

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.