程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> LeetCode -- Add Two Numbers

LeetCode -- Add Two Numbers

編輯:C++入門知識

LeetCode -- Add Two Numbers


題目描述:


You are given two linked lists representing two non-negative numbers. 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.


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


同時遍歷兩個鏈表,對每個節點分別求和,每個節點只存1位結果,保留進位用於下一個節點計算。


思路:
1.兩個指針分別指向鏈表1(l1)和鏈表2(l2)的首位,逐位計算即可。
2.存首節點以及當鏈表遍歷之後,還有carry沒有放入鏈表的情況。



/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
        ListNode node = null;        
    	ListNode head = null;
    	
    	var carry = 0;
    	while(l1 != null || l2 != null){
    		
    		var a = l1 != null ? l1.val : 0;
    		var b = l2 != null ? l2.val : 0;
    		
    		var s = a + b + carry;
    		var r = s % 10;
    		if(node == null){
    			node = new ListNode(r);
    			head = node;
    		}else{
    			node.next = new ListNode(r);
    			node = node.next;
    		}
    		carry = s / 10;
    		
    		if(l1 != null){
    			l1 = l1.next;
    		}
    		if(l2 != null){
    			l2 = l2.next;
    		}
    	}
    	
    	if(carry > 0){
    		var n = new ListNode(carry);
    		node.next = n;
    	}
    	
    	return head;
    }
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved