66. Plus One

Swift 3.0

//
//  E_66_PlusOne.swift
//  AlgorithmLeetCode
//
//  Created by okerivy on 2017/3/7.
//  Copyright ? 2017年 okerivy. All rights reserved.
//  https://leetcode.com/problems/plus-one

import Foundation




// MARK: - 題目名稱: 66. Plus One

/* MARK: - 所屬類別:
 標(biāo)簽: Array, Math
 
 相關(guān)題目:
  (M) Multiply Strings
  (E) Add Binary
  (M) Plus One Linked List
 
 */

/* MARK: - 題目英文:
 
 Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.
 
 You may assume the integer do not contain any leading zero, except the number 0 itself.
 
 The digits are stored such that the most significant digit is at the head of the list.
 
 */


/* MARK: - 題目翻譯:
 
 給定一個整數(shù)數(shù)組代表一個非負(fù)整數(shù)卷扮,將這個整數(shù)加1荡澎。
 您可以假定這個整數(shù) 第一位不會是0,除了數(shù)字0本身。
 數(shù)字在存儲的時候?qū)⒆钪匾臄?shù)字(即整數(shù)的最高位)放在數(shù)組的開頭晤锹。
 */



/* MARK: - 解題思路:
 
 這是一道非常常規(guī)的整數(shù)加1的題目摩幔。根據(jù)題目意思整數(shù)123在數(shù)組中是這樣存儲的[1,2鞭铆,3]或衡。
 
 所以,進(jìn)行加1操作的時候衔彻,需要倒著遍歷數(shù)組薇宠。
 
 需要注意的一個地方就是要考慮進(jìn)位的問題。如果循環(huán)結(jié)束之后艰额,產(chǎn)生了進(jìn)位澄港,則數(shù)組需要在開頭插入1個值為1的新元素。
 */


/* MARK: - 復(fù)雜度分析:
 分析
 
 Java 中需要返回數(shù)組柄沮,而這個數(shù)組在處理之前是不知道大小的回梧,故需要對最后一個進(jìn)位單獨處理。
 時間復(fù)雜度 O(n), 空間復(fù)雜度在最后一位有進(jìn)位時惡化為 O(n), 當(dāng)然也可以通過兩次循環(huán)使得空間復(fù)雜度為 O(1).
 
 */



// MARK: - 代碼:
private class Solution {
    
    func plusOne(_ digits: [Int]) -> [Int] {

        return plusDigit(digits, 1)
    }
    
    private func plusDigit(_ digits: [Int], _ digit: Int) -> [Int] {
        
        if digits.count == 0 {
            return []
        }
        
        // 用carry表示進(jìn)位
        var carry = digit
        // 初始化為0的數(shù)組
//        var numArr = [Int](repeating: 0, count: digits.count)
        // 直接賦值
        var numArr = digits
        
        // 從末尾開始遍歷
        var index = digits.count - 1
        
        while index >= 0 {
            
            // 和 = 當(dāng)前數(shù)字 + 進(jìn)位
            let sum = digits[index] + carry
            // 重新賦值
            numArr[index] = sum % 10
            // 獲取進(jìn)位
            carry = sum / 10
            
            // 這個判斷可以 減少循環(huán)次數(shù)
            if carry == 0 {
                break
            }
            index -= 1
        }
        
        // 循環(huán)結(jié)束 如果還有進(jìn)位 就在數(shù)組前面添加一個元素
        if carry == 1 {
            // 在以前的0位前面插入一個數(shù)據(jù)
            numArr.insert(1, at: 0)
        }
        
        return numArr;
    }
    
}



// MARK: - 測試代碼:
func plusOne() {
    
    let array = [1,2,3,4,5]
    
    print("改變前的數(shù)組 \(array)")
    let numArr = Solution().plusOne(array)
    print("改變后的的數(shù)組為  \(numArr)") // [1,2,3,4,6]
    
}




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祖搓,一起剝皮案震驚了整個濱河市狱意,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拯欧,老刑警劉巖详囤,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異镐作,居然都是意外死亡藏姐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門该贾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來羔杨,“玉大人,你說我怎么就攤上這事杨蛋《挡模” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵逞力,是天一觀的道長曙寡。 經(jīng)常有香客問我,道長寇荧,這世上最難降的妖魔是什么卵皂? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮砚亭,結(jié)果婚禮上灯变,老公的妹妹穿的比我還像新娘。我一直安慰自己捅膘,他們只是感情好添祸,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寻仗,像睡著了一般刃泌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上署尤,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天耙替,我揣著相機與錄音,去河邊找鬼曹体。 笑死俗扇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的箕别。 我是一名探鬼主播铜幽,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼串稀!你這毒婦竟也來了除抛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤母截,失蹤者是張志新(化名)和其女友劉穎到忽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體清寇,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡喘漏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了颗管。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陷遮。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖垦江,靈堂內(nèi)的尸體忽然破棺而出帽馋,到底是詐尸還是另有隱情,我是刑警寧澤比吭,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布绽族,位于F島的核電站,受9級特大地震影響衩藤,放射性物質(zhì)發(fā)生泄漏吧慢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一赏表、第九天 我趴在偏房一處隱蔽的房頂上張望检诗。 院中可真熱鬧匈仗,春花似錦、人聲如沸逢慌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽攻泼。三九已至火架,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間忙菠,已是汗流浹背何鸡。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留牛欢,地道東北人骡男。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像氢惋,于是被迫代替她去往敵國和親洞翩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359