題目連結(jié):
題目意譯:
給定一整數(shù) num,回傳三個(gè)連續(xù)整數(shù)(按升序排序後回傳)使得總和為 num。如果 num 無(wú)法表示為三個(gè)連續(xù)整數(shù)的總和,則回傳一個(gè)空陣列。
限制:
0 ≦ num ≦ 10 ^ 15
範(fàn)例測(cè)資:
範(fàn)例 1:
輸入: num = 33
輸出: [10,11,12]
解釋?zhuān)?33 可以表示為 10 + 11 + 12 = 33。
10 、 11 、 12 是三個(gè)連續(xù)整數(shù),因此我們回傳 [10,11,12]。
範(fàn)例 2:
輸入: num = 4
輸出: []
解釋?zhuān)?不存在任何一個(gè)方式可以使用三個(gè)連續(xù)整數(shù)總和為 4。
解題思維:
可以看到題意即為找到一整數(shù) x,滿足 (x - 1) + x + (x + 1) = num。
而整理一下上面的式子可以得到
3x = num
因此可以推得當(dāng) num 無(wú)法被 3 整除的時(shí)候,x 就不會(huì)是整數(shù);反之,x 此時(shí)才會(huì)是整數(shù)。
因此我們可以先判斷 num 是否為 3 的倍數(shù)。如果不是,則直接回傳空陣列(因?yàn)闊o(wú)解);如果是,則答案即為 [x - 1, x, x + 1],其中 x 為 num ÷ 3。
此次分享到此為止,如有任何更加簡(jiǎn)潔的想法或是有說(shuō)明不清楚之地方,也煩請(qǐng)各位大大撥冗討論。