1. 程式人生 > >連結串列實現兩個數字相加

連結串列實現兩個數字相加

兩個用連結串列表示的數字相加
https://leetcode.com/problems/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
從頭開始加,若後面不夠需要新建連結串列結點。
若想方便可以不斷新建結點儲存每位的和,若要時間複雜度底,就直接加在某個連結串列上。
此處演示加在某個連結串列上的程式碼

public ListNode addTwoNumbers(ListNode l1, ListNode l2){
    if(l1 == null) return l2;
    else if(l2 == null) return l1;
    else{
        ListNode ls1 = l1, ls2 = l2;
        int sum = 0, prog = 0;
        while(ls1 != null && ls2 != null){
            sum = ls1.val + ls2.val+ prog;
            ls1.val = sum
%10; prog = sum/10; if(ls1.next == null || ls2.next == null) break; ls1 = ls1.next; ls2 = ls2.next; } if(ls1.next == null) ls1.next = ls2.next; while(prog != 0){ if(ls1.next == null) { ls1.next = new ListNode(prog); prog = 0
; } else{ ls1 = ls1.next; sum = ls1.val + prog; ls1.val = sum%10; prog = sum/10; } } } return l1; }

相關推薦

連結串列實現數字相加

兩個用連結串列表示的數字相加 https://leetcode.com/problems/add-two-numbers/ You are given two linked lists representing two non-negative number

連結串列實現集合求並集

 #include<stdio.h> #include<stdlib.h> #include<time.h>  typedef struct node{      int data;      struct node *next;  } LinkList;  LinkLis

連結串列實現多項式的加法

最近遇到這樣一個題目,使用連結串列來實現兩個多項式的加法,剛開始覺得應該比較簡單,也可能是自己基礎不紮實吧,這其中也是踩了很多的坑啊,最終還是成功了,特此寫部落格記錄一下。 一、題目要求 使用連結串列來實現兩個多項式的加法,輸出最終相加後的多項

js中,實現數字相加

<input   type="text"   id="a1"   value="1">   +       <input   type="text"   id="a2"   value="1">   =       <input   type="

連結串列實現相加

給定兩個非空連結串列來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回一個新的連結串列。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。 示例: 輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 輸出:7 -

實現大數相加

dsta stack sem import ++ isempty 數字運算 入棧 運算 import java.util.Scanner; import java.util.Stack; public class JavaDemo { public stati

445. Add Two Numbers II 數字相加2

兩個 mono ria most new bsp mod arr inpu You are given two non-empty linked lists representing two non-negative integers. The most significa

2. Add Two Numbers 數字相加

dtw 個數字 ive question overflow space spa keyword new You are given two non-empty linked lists representing two non-negative integers. The

JavaScript數字相加的問題

今天學習了一下javascript,在實現一個計算器小應用時,發現兩個數字相加返回的結果不正確,例如 var a = 1; var b = 2; var sum = a + b; document.write(sum); sum的輸出結果

Leetcode 002.相加 [LeetCode] Add Two Numbers 數字相加

1.題目描述 給出兩個 非空 的連結串列用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。 如果,我們將這兩個數相加起來,則會返回一個新的連結串列來表示它們的和。 您可以假設除了數字 0 之外

LeetCode-21-連結串列-合併有序連結串列

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 方案一:歸併中的merge

輸出倒數第k節點+反轉連結串列+合併有序連結串列

要求:遍歷連結串列一邊 #include <iostream> #include <cstring> using namespace std; struct node{ int val; node * next; }; node * fi

js中數字相加卻得到字串的問題

我在js中定義了兩個var 的變數,他們都是通過$(“#xxx”).val()的方式獲取到的,儘管我在定義var時初始化為0,但將這兩個變數相加後依然得到了將兩個數字拼在一起的字串,相減的話就不會這樣。 解決辦法: 在獲取val()進行賦值的時候,主動轉換為物件 Number 例:

[劍指offer]連結串列中倒數第k結點/反轉連結串列/合併排序的連結串列

題目描述 輸入一個連結串列,輸出該連結串列中倒數第k個結點。 解釋: 針對該道題目,主要有兩種解法:一種是將連結串列的節點壓入棧,由於棧有一個特點是先進後出,因此倒數第k個變成了順數第k個;第二種解法是求連結串列第k個節點,相當於順序遍歷連結串列第(n-k

[CareerCup] 2.5 Add Two Numbers 數字相加

2.5 You have two numbers represented by a linked list, where each node contains a single digit. The digits are stored in reverse order, such that the 1's

[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 dig

js實現數字相加 而不是拼接

   實現e1 的值 與 e2 相加      var e1= document.getElementById('textbox1').value;       var e2 = document.getElementById("textbox2").value;     

JAVA實現大數相加

主要的思想是:把兩個數存在String中了,然後將每個數字取出,放到陣列,由最末位開始計算,算加法,判斷是否進位,進位則前位+1,若超過長度,則copy到新的陣列。 程式碼如下:public class BigIntAdd { private int[] array;/

c語言連結串列實現集合的交集(1)

#include <stdio.h> #include <malloc.h> typedef struct node { int num; struct node *next; }AGG; AGG *CreateList() { /

連結串列單鏈表求差集

問題描述 已知集合A和B的元素分別用不含頭結點的單鏈表儲存,函式difference()用於求解集合A與B的差集,並將結果儲存在集合A的單鏈表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成計算後A={10,20