前往
大廳
主題

LeetCode - 2485. Find the Pivot Integer 解題心得

Not In My Back Yard | 2023-10-25 12:00:14 | 巴幣 0 | 人氣 92

題目連結:


題目意譯:
給定一正整數 n,找到樞紐(pivot)整數 x 使得:
所有位於 1(含)到 x(含)之間的整數之總和等於所有位於 x(含)到 n(含)之間的整數之總和。

回傳樞紐整數 x。如果不存在這樣子的整數,則回傳 -1。保證在給定的輸入中最多只存在一個樞紐整數。

限制:
1 ≦ n ≦ 1000



範例測資:
範例 1:
輸入: n = 8
輸出: 6
解釋: 6 為樞紐整數,因為 1 + 2 + 3 + 4 + 5 + 6 = 6 + 7 + 8 = 21。

範例 2:
輸入: n = 1
輸出: 1
解釋: 1 為樞紐整數,1 = 1。

範例 3:
輸入: n = 4
輸出: -1
解釋: 可以證明不存在樞紐整數。


解題思維:
可以看到如果存在這樣樞紐整數 x,則代表下列等式成真:
1 + 2 + …… + x = x + (x + 1) + …… + n
利用等差公式並化簡一下可以得到
2x ^ 2 = n ^ 2 + n
因此 x 之值為
sqrt(n × (n + 1) ÷ 2)
其中 sqrt(y) 代表取 y 之平方根。

可以看到這個數值必定存在但是不是整數不好說。而我們只要檢查 n × (n + 1) ÷ 2 是否為一個完全平方數(即某數的平方)即可。如果是則上式即為所求;反之,則代表樞紐整數不存在,因此回傳 -1。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作