iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0

題目說明

給定一個數列 nums,找到在該數列中的某個 index

nums[0] + ... + nums[index-1] == nums[index + 1]+ ... nums[n-1]
如果這個 index 不存在,則回傳 -1

解題思路

這題需要比較左右半的數字

  1. 先從 回傳 index = 0 的情況找到左右半的初始狀態:
  • left: 當 index 為 0 的時候,由於左邊沒有數字了,所以是 0
  • right: 當 index 為零的時候,右半則為整個數列的加總且不包含 index 為 0 的數值
  1. 比較 left 與 right:
  • 相同,回傳 0
  • 不相同,繼續從 index = 1 往下找
    • left 為 nums[1] 左邊數值的加總 -> left += nums[0]
    • right 為 nums[1] 右邊數值得加總 -> right -= nums[1]
  1. 重複步驟 2
  2. 當整個數列都掃過一輪,皆沒有找到,則回傳 -1

程式碼

class Solution:
    def pivotIndex(self, nums: List[int]) -> int:
        left, right = 0, sum(nums) - nums[0]
        if left == right:
            return 0
        for i in range(1, len(nums)):
            left += nums[i-1]
            right -= nums[i]
            if left == right:
                return i
        return -1

上一篇
Day 11 - 706. Design HashMap
下一篇
Day 13 - 880. Decoded String at Index
系列文
Leetcode 習慣養成之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言