【Leecode】两数相加
生活随笔
收集整理的這篇文章主要介紹了
【Leecode】两数相加
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習了鏈表結構,鏈表中元素的訪問,對象指針的初始化與賦值,鏈表的創建(多個節點鏈接起來),進位計算的表達。
100ms
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* sum = new ListNode(0);ListNode* tmp = sum;int carry = 0; while(l1 || l2) {if(l1){carry += l1->val;l1 = l1->next;}if(l2){carry += l2->val;l2 = l2->next;}tmp->next = new ListNode(carry % 10);carry /= 10;tmp = tmp->next;}if(carry)tmp->next = new ListNode(carry);return sum->next;} };
?
68ms
class Solution { public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode *L = new ListNode(0), *p = L;int m = 0; //進位值int x, y; //保存l1 l2節點的值while(l1 || l2){ //題目中的鏈表是沒有header的x = (l1 != NULL) ? l1->val : 0;y = (l2 != NULL) ? l2->val : 0;p->val = (x + y + m) % 10;m = (x + y + m) > 9;cout << x << y << m << endl;l1 = (l1 != NULL) ? l1->next : NULL;l2 = (l2 != NULL) ? l2->next : NULL;p->next = ((l1 || l2) || m != 0) ? new ListNode(m) : NULL; // 如果僅判斷(l1 || l2)的話,5+5 的情況會丟失進位p ? p = p->next : 0;}return L;} };
?
轉載于:https://www.cnblogs.com/gdut-gordon/p/10513156.html
總結
以上是生活随笔為你收集整理的【Leecode】两数相加的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单几步让CentOS系统时间同步
- 下一篇: 《旅次景空寺宿幽上人院》第二句是什么