Find Pivot Index[LeetCode/Python3/Easy]
題目
給定一個整數數組 nums,計算這個數組中的「中心下標」。
中心下標的左邊所有數的和等於右邊所有數的和。
如果不存在中心下標,返回 -1。如果有多個中心下標,請返回最左邊那個。
範例 1:
輸入:nums = [1, 7, 3, 6, 5, 6]
輸出:3
解釋:
中心下標是 3 。
左邊數組的和為 nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 。
右邊數組的和為 nums[4] + nums[5] = 5 + 6 = 11 。
範例 2:
輸入:nums = [1, 2, 3]
輸出:-1
解釋:
這個數組中不存在中心下標。
範例 3:
輸入:nums = [2, 1, -1]
輸出:0
解釋:
中心下標是 0 。
左邊數組(加粗部分)的和為 0 。
右邊數組的和為 nums[1] + nums[2] = 1 + -1 = 0 。
提示:
- nums 的長度范圍为 [0, 10000]。
- 任何一个 nums[i] 将会是一个范围在 [-1000, 1000]的整数。
我的答案
直覺答案
class Solution:
def pivotIndex(self, nums: List[int]) -> int:
if len(nums)==1:
return 0
for i in range(len(nums)):
if sum(nums[:i]) == sum(nums[i+1:]):
return i
return -1
別人的答案
class Solution:
def pivotIndex(self, nums: List[int]) -> int:
"""
:type nums: List[int]
:rtype: int
"""
left_sum = 0
right_sum = sum(nums)
for i in range(len(nums)):
if left_sum == right_sum - left_sum - nums[i]:
return i
left_sum += nums[i]
return -1
速度好快呀!仔細看其實也沒很難,看來使用python built-in function 不一定在leetcode裡很有利!
留言
張貼留言