↑看個小廣告,支持好內容↑
陣列中的每項都有一次調整的機會,可以被任意改成nums[i]-k
~nums[i]+k
之間的整數,而我們的目標是:盡可能縮小陣列的全距 (最大值-最小值)。
似乎很直觀,就把小的數字變大一點、大的數字變小一點就好了對吧?
// 成功的案例
nums=[1,9], k=2: 1→3、9→7,全距=4
// 失敗的案例
nums=[5,7], k=3: 5→8、7→4,全距=4
(顯然不對,這比調整前的差距還大)
事實上,直接把 5 改成 7,兩數就相同了,故正確答案應該是 0;即便我們在陣列加入很多很多 6,他們照樣可以被改成 7,並不影響結果。綜上,我們得到兩個結論:
max-min-2*k
<0,答案必定為 0。[備註] 這題因為文字敘述收到許多負評,但我認為它是刻意為之的,如何在有限時間內消化提取線索解題,也是邏輯與閱讀素養的一大考驗。話說回來,把蕪雜的需求化約進程式設計,這本身就是開發實務的縮影哪~ (茶
Array
、Math
69.3%
❤️ 若內容對你實用,歡迎追蹤本專題,或小額贊助支持~
⭐ 這是我的第 13 篇刷題筆記,完整解題索引看這裡 → Here