LeetCode 908. Smallest Range I

問題

問題描述:給定一個(gè)整形數(shù)組 A风宁,對于 A 中的每個(gè)元素 A[i],都可以加上一個(gè)數(shù) x蛹疯, 其中 -K <= x <= K戒财,然后可以得到一個(gè)新數(shù)組 B。求出 B 中最大數(shù)與最小數(shù)的最小差值捺弦。

問題要點(diǎn):首先需要明確的是饮寞,這里的差值是指絕對值,是 >= 0 的列吼。讓 B 中最大數(shù)與最小數(shù)的差值最小幽崩,取決于怎么加 x

想看英文的戳這里:原題地址

解決方案

簡化問題

先簡化問題寞钥,假設(shè)有 a慌申,b 兩個(gè)數(shù),且 a > b理郑。a蹄溉,b 分別加上一個(gè)數(shù)之后,a1 = a + x您炉,b1 = b + x 柒爵,其中 -K <= x <= K,那么a1邻吭,b1 的最小差值是多少餐弱?

假設(shè) ab 的差值為 c = a - b囱晴。

當(dāng) a膏蚓,b 各加上一個(gè)數(shù)后,其差值為 a + x1 - (b + x2) = a - b - (x2 - x1)畸写。由于 a-b 是正數(shù)驮瞧,則需要讓x2 - x1 越接近 c,其差值越小枯芬,且 x2 為正數(shù)论笔。

由于 -K <= x <= K,比較容易推斷出千所,x2 - x1 的范圍是 [-2k, 2k]狂魔,所以其最大值為 2k

比如 c = 3淫痰,k = 2最楷,x2 - x1 的范圍在 [-4, 4]之間,也就是說完全能取到 3,所以其最小差值為 0籽孙。
比如 c = 5烈评,k = 1x2 - x1的最大值也只能是 2犯建,所以最小差值為 5 - 2 = 3讲冠。

所以,按照上面的推斷适瓦,我們可以比較 c2k竿开,如果c <= 2k,則最小差值為 0犹菇;如果 c > 2k德迹,則為 c - 2k

回到正題

那么對于A數(shù)組來說揭芍,我們只要找到其最大值 maxA胳搞、最小值 minA,轉(zhuǎn)化為上面的問題即可称杨。

那為什么能保證 maxA + x1肌毅,minA + x2B 中仍然是最大值和最小值呢?因?yàn)榭梢圆僮髌渌?x姑原,使其值一定在 minA + x1 <= B[i] <= maxA + x2之間悬而。

比如 A = [2, 4, 9], k = 3锭汛,那么 maxA - minA = 9 - 2 = 7笨奠,則最小差值為 7 - 2k = 1

A -> B 變換如下唤殴,為了使得 B[1] 處于最大最小值之間般婆,需要 +1。這只是其中的一種變換方式朵逝。

A:[2, 4, 9] => B:[2+3, 4+1, 9-3] => [5, 5, 6]

swift 代碼如下:

class Solution {
    func smallestRangeI(_ A: [Int], _ K: Int) -> Int {
        if A.count <= 1 {
            return 0
        }
        
        var minA = A[0]
        var maxA = A[0]
        for a in A {
            if a > maxA {
                maxA = a
            } else if a < minA {
                minA = a
            }
        }
        
        // 最大數(shù)與最小數(shù)之差
        let difference = maxA - minA
        
        // 兩個(gè)數(shù)分別加 x 后蔚袍,差值范圍 [-2k, 2k],如果能補(bǔ)齊配名,則為 0
        if difference <= 2 * K {
            return 0
        } else {
            // 補(bǔ)最大值
            return difference - 2 * K
        }
    }
        
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末啤咽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子渠脉,更是在濱河造成了極大的恐慌宇整,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芋膘,死亡現(xiàn)場離奇詭異没陡,居然都是意外死亡涩哟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門盼玄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人潜腻,你說我怎么就攤上這事埃儿。” “怎么了融涣?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵童番,是天一觀的道長。 經(jīng)常有香客問我威鹿,道長剃斧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任忽你,我火速辦了婚禮幼东,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘科雳。我一直安慰自己根蟹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布糟秘。 她就那樣靜靜地躺著简逮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尿赚。 梳的紋絲不亂的頭發(fā)上散庶,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機(jī)與錄音凌净,去河邊找鬼悲龟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛泻蚊,可吹牛的內(nèi)容都是我干的躲舌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼性雄,長吁一口氣:“原來是場噩夢啊……” “哼没卸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起秒旋,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤约计,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后迁筛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煤蚌,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尉桩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筒占。...
    茶點(diǎn)故事閱讀 40,015評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蜘犁,靈堂內(nèi)的尸體忽然破棺而出翰苫,到底是詐尸還是另有隱情,我是刑警寧澤这橙,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布奏窑,位于F島的核電站,受9級特大地震影響屈扎,放射性物質(zhì)發(fā)生泄漏埃唯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一鹰晨、第九天 我趴在偏房一處隱蔽的房頂上張望墨叛。 院中可真熱鬧,春花似錦并村、人聲如沸巍实。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棚潦。三九已至,卻和暖如春膝昆,著一層夾襖步出監(jiān)牢的瞬間丸边,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工荚孵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妹窖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓收叶,卻偏偏與公主長得像骄呼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子判没,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 8,994評論 0 13
  • 來源: http://www.douban.com/group/topic/14820131/ 調(diào)整變量格式: f...
    MC1229閱讀 6,921評論 0 5
  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,345評論 0 2
  • 瘦削的女子被重重甩在地上蜓萄,顧熙北渾身散發(fā)著戾氣。 二: 大掌掐著她的脖子: "蘇梓落!你的心真是比蛇蝎還毒!靜怡肚...
    小情詩獨(dú)家閱讀 757評論 0 0
  • 無論世界變成怎樣绸硕,請做一個(gè)正能量的人堂竟。 趁的酒勁, 寫自己想寫的東西玻佩。沒有華麗的語言可以形容我現(xiàn)在的心情出嘹。今天...
    豆?jié){哥油條妹閱讀 260評論 0 0