【iOS每日算法】?jī)蓴?shù)相加豹绪,給出兩個(gè)非空的鏈表用來(lái)表示兩個(gè)非負(fù)的整數(shù)。其中申眼,它們各自的位數(shù)是按照逆序的方式存儲(chǔ)的瞒津,并且它們的每個(gè)節(jié)點(diǎn)只能存儲(chǔ)一位數(shù)字。

題目:

給出兩個(gè) 非空 的鏈表用來(lái)表示兩個(gè)非負(fù)的整數(shù)括尸。其中巷蚪,它們各自的位數(shù)是按照 逆序 的方式存儲(chǔ)的,并且它們的每個(gè)節(jié)點(diǎn)只能存儲(chǔ) 一位 數(shù)字濒翻。
如果屁柏,我們將這兩個(gè)數(shù)相加起來(lái),則會(huì)返回一個(gè)新的鏈表來(lái)表示它們的和有送。
您可以假設(shè)除了數(shù)字 0 之外淌喻,這兩個(gè)數(shù)都不會(huì)以 0 開頭。

來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/add-two-numbers
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有雀摘。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán)裸删,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

考察點(diǎn):

  • 這是一道LeetCode上非痴笤基礎(chǔ)的一道算法題涯塔。個(gè)人覺得考察點(diǎn)就是,用盡量小的時(shí)間復(fù)雜度去解題清蚀。因?yàn)槿绻婚_始思路是先把鏈表中的數(shù)轉(zhuǎn)成兩個(gè)整數(shù)再sum匕荸,之后再放進(jìn)鏈表里也是一個(gè)思路,但這樣會(huì)循環(huán)兩遍鏈表轧铁。但因?yàn)閮蓚€(gè)鏈表中的個(gè)位每聪,十位百位都是一致的,所以一次循環(huán),各位相加進(jìn)位药薯,并放入鏈表就可以解決問(wèn)題绑洛。這樣就少做兩次循環(huán),是更優(yōu)解法童本。

解法:

一真屯、循環(huán)兩個(gè)鏈表對(duì)應(yīng)各位,并相加
  • 這里鏈表用數(shù)組表示穷娱,理解算法思路即可

- (NSArray *)sumNum:(NSArray<NSNumber *>*)numArr1 withNum2:(NSArray<NSNumber *>*)numArr2 {
    NSInteger len1 = numArr1.count;
    NSInteger len2 = numArr2.count;
    NSMutableArray *totalArr = [NSMutableArray array];
    for(int i = 0; (i < len1 || i < len2); i++) {
        int sumNum = (i < len1 ? [numArr1[i] intValue] : 0) + (i < len2 ? [numArr2[i] intValue] : 0) + (i < totalArr.count ? [totalArr[i] intValue] : 0);
        if(sumNum < 10) {
            totalArr[i] = @(sumNum);
        } else {
            totalArr[i] = @(sumNum % 10);
            totalArr[i + 1] = @(1);
        }
    }
    return totalArr;
}


二绑蔫、先算出兩數(shù)之和,然后放入數(shù)組
  • 這個(gè)解法比上一個(gè)復(fù)雜泵额,但是更容易想到配深,畢竟直接相加兩個(gè)數(shù),要比各位數(shù)相加進(jìn)位要容易嫁盲。但實(shí)際上多進(jìn)行了兩次循環(huán)篓叶。
- (NSArray *)twoSumNum:(NSArray<NSNumber *>*)numArr1 withNum2:(NSArray<NSNumber *>*)numArr2 {
    int num1 = 0;
    int num2 = 0;
    for (int i = 0; i < numArr1.count; i++) {
        num1 = num1 + [numArr1[i] intValue] * pow(10, i);
    }
    for (int i = 0; i < numArr2.count; i++) {
        num2 = num2 + [numArr2[i] intValue] * pow(10, i);
    }
    int totalNum = num1 + num2;
    NSMutableArray *totalArr = [NSMutableArray array];
    for(int i = 0;;i++) {
        int num = (totalNum % [@(pow(10, i + 1)) intValue]) / [@(pow(10, i)) intValue];
        int yushu = totalNum / [@(pow(10, i + 1)) intValue];
        totalArr[i] = @(num);
        if(yushu <= 0) {
            return totalArr;
        }
    }
}

總結(jié)

  • 從這道題中我們可以學(xué)到如何更好的利用數(shù)據(jù)和數(shù)據(jù)的結(jié)構(gòu),而不是簡(jiǎn)單的去處理問(wèn)題羞秤,更好的算法和思路能為程序節(jié)省很多資源缸托,提升效率。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瘾蛋,一起剝皮案震驚了整個(gè)濱河市俐镐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哺哼,老刑警劉巖佩抹,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異取董,居然都是意外死亡匹摇,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門甲葬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人懈贺,你說(shuō)我怎么就攤上這事经窖。” “怎么了梭灿?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵画侣,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我堡妒,道長(zhǎng)配乱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮搬泥,結(jié)果婚禮上桑寨,老公的妹妹穿的比我還像新娘。我一直安慰自己忿檩,他們只是感情好尉尾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著燥透,像睡著了一般沙咏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上班套,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天肢藐,我揣著相機(jī)與錄音,去河邊找鬼吱韭。 笑死吆豹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杉女。 我是一名探鬼主播瞻讽,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼熏挎!你這毒婦竟也來(lái)了速勇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤坎拐,失蹤者是張志新(化名)和其女友劉穎烦磁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哼勇,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡都伪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了积担。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陨晶。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖帝璧,靈堂內(nèi)的尸體忽然破棺而出先誉,到底是詐尸還是另有隱情,我是刑警寧澤的烁,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布褐耳,位于F島的核電站,受9級(jí)特大地震影響渴庆,放射性物質(zhì)發(fā)生泄漏铃芦。R本人自食惡果不足惜雅镊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刃滓。 院中可真熱鬧仁烹,春花似錦、人聲如沸注盈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)老客。三九已至僚饭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胧砰,已是汗流浹背鳍鸵。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尉间,地道東北人偿乖。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像哲嘲,于是被迫代替她去往敵國(guó)和親贪薪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353