題目連結(jié):
題目意譯:
給定一個索引值從 0 開始的陣列 nums,找到最左側(cè)的 middleIndex(即所有可能中最小的)。
一個 middleIndex 為一索引值其中 nums[0] + nums[1] + …… + nums[middleIndex - 1] == nums[middleIndex + 1] + nums[middleIndex + 2] + …… + nums[nums.length - 1]。
如果 middleIndex == 0,則其左側(cè)之總和視為 0。相同地,如果 middleIndex == nums.length - 1,右側(cè)之總和視為 0。
回傳滿足條件的、最左的 middleIndex;反之若無這樣子的索引值,則回傳 -1。
限制:
1 ≦ nums.length ≦ 100
-1000 ≦ nums[i] ≦ 1000
範(fàn)例測資:
範(fàn)例 1:
輸入: nums = [2,3,-1,8,4]
輸出: 3
解釋:
索引值 3 前的數(shù)字總和為 2 + 3 + -1 = 4
索引值 3 後的數(shù)字總和為 4 = 4
範(fàn)例 2:
輸入: nums = [1,-1,4]
輸出: 2
解釋:
索引值 2 前的數(shù)字總和為 1 + -1 = 0
索引值 2 後的數(shù)字總和為 0
範(fàn)例 3:
輸入: nums = [2,5]
輸出: -1
解釋:
沒有合法的 middleIndex。
範(fàn)例 4:
輸入: nums = [1]
輸出: 0
解釋:
索引值 0 前的數(shù)字總和為 0
索引值 0 後的數(shù)字總和為 0
解題思維:
可以利用類似前綴和(Prefix Sums,如
這題)的概念得到每個索引值左側(cè)、右側(cè)的數(shù)值總和。接著從索引值小掃到大,看第一個符合的索引值是誰即是所求;不過當(dāng)掃完都沒有找到符合的,代表不存在任何一個 middleIndex,此時請回傳 -1。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。