↑看個小廣告,支持好內容↑
規則很簡單,只要能湊出 N 個都不同的數字,加總=0 就行。假設N=3
,你可以輸出[3,-4,1]
、[29,-29,0]
、[-1751,783,968]
都沒問題,答案有無限多種,重點在於:產生它們的規律為何?
既然數字不能重複,那就從 1,2,3 一路往上生成吧!無論項數多少,我們總是輸出 N-1
個正數,搭配一個負數,讓這個負數去抵銷所有正數的總和。
N=5 => 正數 (1,2,3,4)、負數 -10
N=9 => 正數 (1,2,3,4,5,6,7,8)、負數 -36
Sigma 無誤!這想法確實能避免數字重複,在邏輯上很穩妥,當心 N=1
這個例外就好 (你應該知道要輸出什麼吧)。只是隨著 N 變大,從 1 加到 N-1 的階和會越來越可觀 ...
如果想避免上述情形,正、負項的數量勢必該均衡一些,這時候相反數是個好選擇!
運用 a+(-a)=0,對於任意偶數 N,我們就生成 N/2 組的相反數;要是碰到奇數呢?別緊張,多補上一項 0
不就解決了!
N=4 => 兩組相反數 (1,-1)(2,-2)
N=7 => 三組相反數 (1,-1)(2,-2)(3,-3)、加一項 0
事實上這兩種解法都能通過。有別於一般題目具唯一解,這類問題允許你發揮想像力及創意,brainstorm 任何招式來達成需求,是我覺得很有意思的地方!還覺得意猶未盡嗎?不妨試試 1317 這道題吧~
Array
、Math
76.4%
❤️ 若內容對你實用,歡迎追蹤本專題,或小額贊助支持~
⭐ 這是我的第 18 篇刷題筆記,完整解題索引看這裡 → Here