連結串列求和(LintCode)
你有兩個用連結串列代表的整數,其中每個節點包含一個數字。數字儲存按照在原來整數中相反
的順序,使得第一個數字位於連結串列的開頭。寫出一個函式將兩個整數相加,用連結串列形式返回和。
給出兩個連結串列 3->1->5->null
和 5->9->2->null
,返回 8->0->8->null
難度級別: 容易 思路分析:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: /** * @param l1: the first list * @param l2: the second list * @return: the sum list of l1 and l2 */ ListNode *addLists(ListNode *l1, ListNode *l2) { // write your code here if (l1 == NULL) { return l2; }else if (l2 == NULL) { return l1; } int c = 0; int temp = 0; ListNode *head = new ListNode(0); ListNode *p = head; while (l1 != NULL && l2 != NULL) { temp = l1->val+l2->val + c; c = temp/10; temp = temp%10; p->next = new ListNode(temp); p = p->next; l1 = l1->next; l2 = l2->next; } while (l1 != NULL) { temp = l1->val + c; c = temp/10; temp = temp%10; p->next = new ListNode(temp); p = p->next; l1 = l1->next; } while (l2 != NULL) { temp = l2->val + c; c = temp/10; temp = temp%10; p->next = new ListNode(temp); p = p->next; l2 = l2->next; } if (c != 0) { p->next = new ListNode(c); } return head->next; } };
程式碼說明: 實現程式碼中變數說明: c表示進位 temp表示臨時和
相關推薦
連結串列求和(LintCode)
題目來源:LintCode 原題地址:http://www.lintcode.com/zh-cn/problem/add-two-numbers/ 題目: 你有兩個用連結串列代表的整數,其中每
資料結構與演算法之連結串列篇(上)
連結串列作為一種基礎的資料結構之一,我們會常常使用到它,接下來就讓我們一起學習吧。 1、連結串列的經典應用場景: LRU快取淘汰演算法。 2、快取是一種提高資料讀取效能的技術,在硬體設計、軟體開發中都有著非常廣泛的應用,比如常見的CPU快取、資料庫快取、瀏覽器快取等等。
資料結構與演算法之連結串列篇(下)
Q:如何輕鬆寫出正確的連結串列程式碼? 總結起來,就是投入時間+技巧; 一、投入時間: 只要願意投入時間,大多數人都是可以學會的,比如說,如果你真能花上一個週末或者一整天時間,就去寫連結
程式設計師程式碼面試指南 —— 連結串列問題(四)
題目:將單鏈表的每K個節點之間逆序 描述:給定一個單鏈表的頭結點head,實現一個調整單鏈表的函式,使得每K個節點之間逆序,如果最後不夠K個節點一組,則不調整最後幾個節點 例如: 連結串列 1—>2—>3—>4—>5—>6—>7—>8—>nul
程式設計師程式碼面試指南 —— 連結串列問題(三)
題目:複製含有隨機指標節點的連結串列 描述:有一種連結串列節點類描述如下: public class Node { public int value; public Node next; public Node rand; public Node(int data){ this.value
程式設計師程式碼面試指南 —— 連結串列問題(二)
題目:給定一個連結串列的頭節點head,請你判斷是否為迴文結構 例如:1 —> 2 —> 1 ture 1 —> 2 —> 2 —> 1 true 1 —> 2 —> 3 flase 思路:可以使用棧這種資料結構,可以將整個單向連結串列分為前半區和後
程式設計師程式碼面試指南 —— 連結串列問題(一)
注:題目來自於《程式設計師程式碼面試指南:IT名企演算法與資料結構題目最優解》,該書是左程雲老師的著作,值得推薦,這裡僅是記錄一下該書中題目的解法和個人理解 題目一:在單鏈表和雙鏈表中刪除倒數第K個節點 描述: 分別實現兩個函式,一個可以刪除單鏈表中倒數第K個節點,另一個可以刪除雙鏈
單向連結串列反轉(倒置)問題
今天遇到單向連結串列的反轉的問題,於是靜下心來好好想了一番。 解題思路如下圖: 假設當前建立好的連結串列如下: 首先讓頭節點與第一個元素節點斷開,但是要注意在斷開之前需要用p指標指向第一個元素節點來儲存第一個元素節點的位置,然後再斷開。在這裡有一個指標
面向物件之Python的連結串列實現(二)迴圈連結串列
接上一章的練習,這裡接著實現單鏈表的變型——傳說中的迴圈單鏈表。給出一個簡單的類,構造4個功能並例項化測試。 在下一篇文章中將會關注一個比較tricky的問題:如何判斷連結串列有環?以及求出環長度 # -*- coding: utf-8 -*- """ Created
二進位制求和(LintCode)
題目來源:LintCode 原題地址:http://www.lintcode.com/zh-cn/problem/add-binary/ 題目: 給定兩個二進位制字串,返回他們的和(用二進位制
靜態記憶體分配-連結串列管理(1)單向量表講解
單向連結串列 單向量表有頭節點 和節點組成,頭節點主要是管理連結串列使用,節點組成資料。 資料結構 **last指向尾節點的Next指標,在節點尾部插入節點時,直接調整頭節點的last內容的指向即可在尾部插入。first指標指向連結串列的首節點。
連結串列初解(四)——佇列的入隊和出隊
自己複習了一下簡單佇列的基本操作,其中要注意的是隊頭和隊尾要始終保持位置正確~還是老習慣,上程式碼+註釋啦~ Code: #include<iostream> using namespace std; typedef struct node { int da
程式設計練習:連結串列習題(上)
(1)題目:輸入兩個連結串列,找出它們的第一個公共節點。 思路: 1)計算出連結串列1的長度; 2)計算出連結串列2的長度; 3)計算出連結串列1和連結串列2的長度差dif;
在O(1)時間複雜度刪除連結串列節點(372)
資料結構—線性結構—連結串列:(在O(1)時間複雜度刪除連結串列節點)一、題目:給定一個單鏈表中的一個等待被刪除的節點(非表頭或表尾)。請在在O(1)時間複雜度刪除該連結串列節點。樣例:Linked l
連結串列學習(3)
1、線性結構與非線性結構,主要看元素之間的關係。若是一對一關係就是線性表,如果不是一對一就是非線性。 2、LS=((a,b,c),(d,e,f)); tail(LS)=((d,e,f)); head
(1)建立二叉樹的二叉連結串列。 (2)寫出對用二叉連結串列儲存的二叉樹進行先序、中序和後序遍歷的遞迴和非遞迴演算法。 (3)寫出對用二叉連結串列儲存的二叉樹進行層次遍歷演算法。 (4)求二叉樹的所有葉子及結點總數。
(1)建立二叉樹的二叉連結串列。 (2)寫出對用二叉連結串列儲存的二叉樹進行先序、中序和後序遍歷的遞迴和非遞迴演算法。 (3)寫出對用二叉連結串列儲存的二叉樹進行層次遍歷演算法。(4)求二叉樹的所有葉子及結點總數。 include<stdio.h> #inclu
連結串列初解(一)——單鏈表的建立、刪除、插入、測長、排序、逆置
由於考試需要,複習一下單鏈表的各種常見操作,直接上程式碼+註釋,需要的可以參考下哈~ Code: #include<iostream> using namespace std; typedef struct student { int data; str
Add Two Numbers(兩個連結串列求和)
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
合併兩個排序連結串列(LintCode)
實現程式碼:#include <iostream> using namespace std; //Definition of ListNode class ListNode { public: int val; ListNode *next; ListNode(int
判斷連結串列相交,若相交,求交點。(假設連結串列可能帶環)
首先我們分析,兩個連結串列是否相交,是否帶環,有以下幾種情況: 求兩個連結串列是否帶環可以分成三個情況: 1.都不帶環,可以轉換成兩個連結串列是否相交的問題。 2.一個帶環,一個不帶環。–>不相交 3.都帶環: 分別求環的入口點 1.入口點