3 Sum Closet

題目

Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.

給一個包含 n 個整數(shù)的數(shù)組 S, 找到和與給定整數(shù) target 最接近的三元組鳍贾,返回這三個數(shù)的和。

https://leetcode.com/problems/3sum-closest/description/

樣例

For example, given array S = {-1 2 1 -4}, and target = 1.
The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

例如 S = [-1, 2, 1, -4] and target = 1. 和最接近 1 的三元組是 -1 + 2 + 1 = 2.

解題思路

這道題的仍然是使用兩個指針 Two Pointers的方法來解決交洗,解題思路和3 Sum這道題相似骑科,這里的時間復(fù)雜度仍然是O(n^2)。

分別使用3個指針來指向當(dāng)前元素构拳、下一個元素和最后一個元素咆爽。如果結(jié)果Sum是小于目標(biāo)值的,我們就將下一個元素接著向數(shù)組右側(cè)遍歷隐圾;如果結(jié)果Sum是大于目標(biāo)值的伍掀,那么我們將最后一個元素向左側(cè)遍歷掰茶。
并且暇藏,每次我們都比較當(dāng)前結(jié)果和目標(biāo)值的差值,如果這個差值小于上一次的結(jié)果濒蒋,將上一次的結(jié)果替換盐碱,否則的話,繼續(xù)遍歷沪伙。

具體代碼如下:

public int threeSumClosest(int[] nums, int target) {
        int res = nums[0] + nums[1] + nums[nums.length - 1];
        Arrays.sort(nums);
        
        for (int i = 0; i < nums.length; i++) {
            int left = i + 1;
            int right = nums.length - 1;
            
            while (left < right) {
                int sum = nums[i] + nums[left] + nums[right];
                if (sum == target) {
                    res = sum;
                    return res;
                } else if (sum < target) {
                    left++;
                } else {
                    right--;
                }
                if (Math.abs(sum - target) < Math.abs(res - target)) {
                     res = sum;
                }
            }
        }
        return res;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瓮顽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子围橡,更是在濱河造成了極大的恐慌暖混,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翁授,死亡現(xiàn)場離奇詭異拣播,居然都是意外死亡,警方通過查閱死者的電腦和手機收擦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門贮配,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人塞赂,你說我怎么就攤上這事泪勒。” “怎么了宴猾?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵圆存,是天一觀的道長。 經(jīng)常有香客問我仇哆,道長沦辙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任税产,我火速辦了婚禮怕轿,結(jié)果婚禮上偷崩,老公的妹妹穿的比我還像新娘。我一直安慰自己撞羽,他們只是感情好阐斜,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著诀紊,像睡著了一般谒出。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邻奠,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天笤喳,我揣著相機與錄音,去河邊找鬼碌宴。 笑死杀狡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贰镣。 我是一名探鬼主播呜象,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼碑隆!你這毒婦竟也來了恭陡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤上煤,失蹤者是張志新(化名)和其女友劉穎休玩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體劫狠,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡拴疤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘉熊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遥赚。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖阐肤,靈堂內(nèi)的尸體忽然破棺而出凫佛,到底是詐尸還是另有隱情,我是刑警寧澤孕惜,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布愧薛,位于F島的核電站,受9級特大地震影響衫画,放射性物質(zhì)發(fā)生泄漏毫炉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一削罩、第九天 我趴在偏房一處隱蔽的房頂上張望瞄勾。 院中可真熱鬧费奸,春花似錦、人聲如沸进陡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趾疚。三九已至缨历,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間糙麦,已是汗流浹背辛孵。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赡磅,地道東北人魄缚。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像仆邓,于是被迫代替她去往敵國和親鲜滩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗节值。 張土汪:刷leetcod...
    土汪閱讀 12,745評論 0 33
  • Two Sum 題目: Given an array of integers, find two numbers ...
    lyoungzzz閱讀 388評論 0 0
  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,505評論 0 23
  • 到這里,在ZEALANDIA的時間就還剩下這兩周了榜聂,五點上班的悲催生活隨著先我們前一周入職的小伙伴的即將離開也快要...
    cora的生活手冊閱讀 398評論 0 1
  • 不知道是不是所有十七八歲的孩子們都像我一樣须肆,明明應(yīng)該是積極向上但大多數(shù)時間都是處于迷媚淠耍慌張的狀態(tài)。 十七八歲的...
    嘩啦啦嚕閱讀 114評論 0 0