前往
大廳
主題

LeetCode - 1991. Find the Middle Index in Array 解題心得

Not In My Back Yard | 2022-02-16 00:00:07 | 巴幣 10 | 人氣 240

題目連結:


題目意譯:
給定一個索引值從 0 開始的陣列 nums,找到最左側的 middleIndex(即所有可能中最小的)。

一個 middleIndex 為一索引值其中 nums[0] + nums[1] + …… + nums[middleIndex - 1] == nums[middleIndex + 1] + nums[middleIndex + 2] + …… + nums[nums.length - 1]。

如果 middleIndex == 0,則其左側之總和視為 0。相同地,如果 middleIndex == nums.length - 1,右側之總和視為 0。

回傳滿足條件的、最左的 middleIndex;反之若無這樣子的索引值,則回傳 -1。

限制:
1 ≦ nums.length ≦ 100
-1000 ≦ nums[i] ≦ 1000



範例測資:
範例 1:
輸入: nums = [2,3,-1,8,4]
輸出: 3
解釋:
索引值 3 前的數字總和為 2 + 3 + -1 = 4
索引值 3 後的數字總和為 4 = 4

範例 2:
輸入: nums = [1,-1,4]
輸出: 2
解釋:
索引值 2 前的數字總和為 1 + -1 = 0
索引值 2 後的數字總和為 0

範例 3:
輸入: nums = [2,5]
輸出: -1
解釋:
沒有合法的 middleIndex。

範例 4:
輸入: nums = [1]
輸出: 0
解釋:
索引值 0 前的數字總和為 0
索引值 0 後的數字總和為 0


解題思維:
可以利用類似前綴和(Prefix Sums,如這題)的概念得到每個索引值左側、右側的數值總和。接著從索引值小掃到大,看第一個符合的索引值是誰即是所求;不過當掃完都沒有找到符合的,代表不存在任何一個 middleIndex,此時請回傳 -1。




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

創作回應

相關創作

更多創作