給予一個整數陣列 nums
,請找出一個轉折點,並回傳轉折點的 index 。
轉折點:當左邊(不包含自己)元素的總和等於右邊(不包含自己)元素的總和,當前的自己稱為轉折點。
當找不到轉折的時候請回傳 -1
如果要有效率地在走訪途中就能夠及時比較,就必須
class Solution {
func pivotIndex(_ nums: [Int]) -> Int {
let sum = nums.reduce(0) { $0 + $1 }
var left = 0
for (index, num) in nums.enumerated() {
if left == sum - left - num { return index }
left += num
}
return -1
}
}
令 n 為陣列的長度
Big O | 說明 | |
---|---|---|
時間複雜度 | O(n) | 線性走訪兩次, O(2n) 調整後為 O(n) |
空間複雜度 | O(1) | 只有用常數個多餘的變數 - 陣列總和和 left 總和 |
以上,就是今天的 LeetCode in Swift ,
如果有什麼問題和回饋歡迎留言一起討論,今天就到這裡,明天見!