用連結串列表示的兩個數相加
1 題目
You are giventwo linked lists representing two non-negative numbers. The digits are storedin reverse order and each of their nodes contain a single digit. Add the twonumbers and return it as a linked list.
Input: (2 -> 4 -> 3)+ (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
2 分析
該題目屬於連結串列的相加,需要注意的有:
(1) 考慮兩個連結串列的長度,尤其是連結串列為空時也能處理。
(2) 每個結點只表示一位數字。
(3) 當連結串列末尾結點相加後若有進位,則需要申請新的結點儲存資訊。
3 實現
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ intlistLength(ListNode* head) { return head ? 1 + listLength(head ->next) : 0; } ListNode*Solution::addTwoNumbers(ListNode *l1, ListNode *l2) { if (listLength(l1) < listLength(l2)) { return addTwoNumbers(l2, l1); } ListNode *head1 = l1, *head2 = l2; int inc = 0; bool isEnd = false; while (head2) { int val = head1 -> val + head2-> val + inc; head1 -> val = val % 10; inc = val / 10; if (head1 -> next) { head1 = head1 -> next; } else { isEnd = true; } head2 = head2 -> next; } while (inc) { int val = isEnd ? inc : head1 ->val + inc; if (isEnd) { head1 -> next = newListNode(val % 10); } else { head1 -> val = val % 10; } inc = val / 10; if (head1 -> next) { head1 = head1 -> next; } else { isEnd = true; } } return l1; }
相關推薦
用連結串列表示的兩個數相加
1 題目 You are giventwo linked lists representing two non-negative numbers. The digits are storedin reverse order and each of their nodes 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 no
2.用連結串列表示多項式
最近真是被數字邏輯電路和高數折磨得夠嗆。 抽出時間 堅持更新! 今天我們談一談凡是談連結串列都一定會提到的多項式問題。 看問題! 定義多項式F(X)=∑ni=0aiXi,我們如何在計算機中儲存這個多項式? 1.用簡單陣列來儲存多項式的係數 顯然,假設這個多項式有n項,我們需要一
連結串列實現兩數相加
給定兩個非空連結串列來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回一個新的連結串列。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。 示例: 輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 輸出:7 -
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 node
用連結串列實現兩個集合求並集
#include<stdio.h> #include<stdlib.h> #include<time.h> typedef struct node{ int data; struct node *next; } LinkList; LinkLis
[LeetCode刷題菜鳥集] 2. Add Two Numbers 單鏈表表示的兩個數相加
給定兩個非空連結串列來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回一個新的連結串列。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。 示例: 輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 輸出:7
PTA 兩個有序連結串列序列的交集 (很簡單 不是用連結串列做的)
兩個有序連結串列序列的交集 (20 分) 已知兩個非降序連結串列序列S1與S2,設計函式構造出S1與S2的交集新連結串列S3。 輸入格式: 輸入分兩行,分別在每行給出由若干個正整數構成的非降序序列,用−1表示序列的結尾(−1不屬於這個序列)。數字用空格間隔。 輸出格式:
【LeetCode-面試演算法經典-Java實現】【002-Add Two Numbers (單鏈表表示的兩個數相加)】
原題 You are given two linked lists representing two non-negative numbers. The digits are stor
連結串列實現兩個數字相加
兩個用連結串列表示的數字相加 https://leetcode.com/problems/add-two-numbers/ You are given two linked lists representing two non-negative number
LeetCode2——Add Two Numbers(兩個連結串列中的數字相加,形成新連結串列)
鄙人不才,故收錄LeetCode中的解法和程式碼。 題目: 參考解法: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *n
【002-Add Two Numbers (單鏈表表示的兩個數相加)】
package algorithm; import java.lang.ref.WeakReference; /* 2個正數相加,該正數用連結串列表示,正數反向儲存(最低位先存) 原題 You are given two linked lists repre
02027_線程池練習:返回兩個數相加的結果
turn mage 操作 ima execution task ati 實現類 res 1、要求:通過線程池中的線程對象,使用Callable接口完成兩個數求和操作。 2、代碼實現: (1)Callable接口實現類 1 import java.util.concu
棧的建立-----用連結串列實現棧
設計: 1、建立Node節點類(儲存連結串列的前節點和本節點儲存的元素) 2、節點儲存的是泛型資料 3、建立一個棧的介面----定義如下函式: 4、介面實現類(棧頂元素指標和連結串列元素計數器) 程式碼實現: 介面類:StackADT publi
Java用連結串列實現棧
上一篇實現了佇列,這一篇我們實現棧。 棧是後入先出的資料結構。 連結串列中插入資料有頭插法和尾插法,本篇我們使用頭插法。 不多說直接上程式碼 連結串列的節點定義和上一篇使用的是同一個,可以參考上一篇。 public class StackImpl<T> { p
Java用連結串列實現佇列
佇列--先入先出 棧---後入先出 連結串列實現佇列和棧。首先我們需要構建一個連結串列。連結串列有哪幾要素? 1、連結串列本身的value 2、連結串列的next指標,next指標指的還是同樣型別的值。 下邊看程式碼 public class Element&l
簡單演算法題-兩個數相加
簡單演算法題-兩個數相加 題目的大意大概是這個樣子的: 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因
MFC版連結串列實現稀疏多項式相加減
連結串列實現多項式運算(加減)MFC視覺化版 題目 設計一個一元稀疏多項式簡單計算器。 基本要求 (1)輸入並建立兩個多項式; (2)多項式a與b相加,建立和多項式c; (3)多項式a與b相減,建立差多項式d; (4)輸出多項式a, b, c, d。輸出格式:比如多項式a為:A(x)=c1xe1
Java演算法給定一個整數陣列,找出其中兩個數相加等於目標值
給定一個整數陣列,找出其中兩個數相加等於目標值 例如:給定陣列及目標值 nums = [2,7,11,15] ,target = 9 因為nums[0] + nums[1] = 2 + 7 = 9 返回[0,1] /** * 使用輔助空間(使用雜湊表
十三 用連結串列實現棧
用連結串列實現棧: 連結串列棧: package com.lt.datastructure.stackqueue; /* * 使用連結串列實現棧 */ public class LinkedListStack<E> implements Stack