Add Two Numbers[leetcode]遞迴版本和迴圈版本,numbersleetcode

來源:互聯網
上載者:User

Add Two Numbers[leetcode]遞迴版本和迴圈版本,numbersleetcode

我寫了兩個版本供參考:

遞迴版本

ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {        return addTwoNumbers(l1, l2, 0);    }        ListNode *addTwoNumbers(ListNode *l1, ListNode *l2, int carry) {        if(l1 == NULL)            return addTwoNumbers(l2, carry);        if(l2 == NULL)            return addTwoNumbers(l1, carry);        l1->val += (l2->val + carry);        l1->next = addTwoNumbers(l1->next, l2->next, l1->val / 10);        l1->val %= 10;        return l1;    }        ListNode *addTwoNumbers(ListNode *l, int carry) {        if(l == NULL)            if (carry)                return new ListNode(carry);            else                return NULL;        l->val += carry;        l->next = addTwoNumbers(l->next, l->val / 10);        l->val %= 10;        return l;                }


非遞迴版本

ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {        ListNode* root = new ListNode(0);        ListNode* cur = root;        int carry = 0;        do        {            cur->val = (l1 == NULL ? 0 : l1->val) + (l2 == NULL ? 0 : l2->val) + carry;            carry = cur->val / 10;            cur->val = cur->val % 10;            l1 = (l1 == NULL ? NULL : l1->next);            l2 = (l2 == NULL ? NULL : l2->next);            if (!l1 && !l2) break;                        cur->next = new ListNode(0);            cur = cur->next;        }while (l1 || l2);                if (carry)            cur->next = new ListNode(carry);        return root;    }



Add two numbers to 19 and make it less than 20How can it be?

because x+y+19<20 SO x+y<1 SO x<1-y
 
怎使用 strict 與 warnings

為什麼要用 use strict?眾多的原因之一是幫你尋找因為錯誤拼字造成的錯誤。比如錯誤使用了’$recieve_date’ 變數,但實際上你在程式中已聲明的是 ’$receive_date’ 變數,這個錯誤就很難發現。同樣,use strict 迫使你把變數的範圍縮到最小,使你不必擔心同名變數在程式的其它部份發生不良作用。(儘管這是 my 的功能,但是如果你使用 use strict 的話,它會強迫你用 my 聲明變數,來達到上述目的)。用 use strict 麻煩嗎?不麻煩,只要在你的指令碼的開始加上11個字元而已!(use strict;), 另外在整個程式中用my 聲明變數。不錯,那我怎麼用 use strict 呢?在你的指令碼的開頭 ’#!/usr/local/bin/perl’ 後面加上這句就行。 use strict; 得,程式出錯了,我該怎麼辦?常見的錯誤資訊一般如下: Global symbol "$xxx" requires explicit package name at ./tst line 5. 這是我們要馬上解決的錯誤。(如果出現類似於 ’Server Error’ 之類的錯誤,請檢查一下你的 網頁伺服器上的 error logs, 或用 "CGI::Carp"包。 )任何時候,當你要聲明一個變數時,都要把 ’my’ 放在前面。例如: # 把這段代碼: $string = "hello world"; @array = qw(ABC DEF); %hash = (A=>1, B=>2); # 改成: my $string = "hello world"; my @array = qw(ABC DEF); my %hash = (A=>1, B=>2); # 把這段代碼: # ’$name’ is global here foreach $name (@names) { print "Name: $name\n"; } # 改成: foreach my $name (@names) { # Now ’$name’ only exists in this block print "Name: $name\n"; } # 把這段代碼: # 同樣, ’$digit’ 在這裡是全域變數 foreach $digit (@digits) { $number = 10*$number + $digit; } print "Number: $number\n"; # 改成: (外層的變數(’$number’) # 將在外層聲明): my $number = 0; foreach my $digit (@digits) # 現在’$digit’ 僅僅在這個代碼塊裡存在 $number = 10*$number + $digit; } print "Number: $number\n"; # 把這段代碼: sub my_sub { ($arg1, $arg2) = @_; print "Arg1: $arg1 Arg2: $arg2\n"; } # 改成: sub my_sub { my ($arg1, $arg2) = @_; print "Arg1: $arg1 Arg2: $a......餘下全文>>
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.