Python 的 K 字首


如果我們有一個數字列表 nums 和一個整數 k,我們必須找到最大的可能 i,其中 nums[0] + nums[1] + ... + nums[i] ≤ k。如果不存在有效的 i,我們將返回 -1。

因此,如果輸入類似 nums = [4, -7, 5, 2, 6],k = 5,那麼輸出將為 3,索引為 3,因為如果我們相加 4+(-7)+5+2 = 4,則小於 k,如果我們新增最後一個元素,它將不再小於 k,因此索引為 3。

為解決此問題,我們將遵循以下步驟 -

  • 對於範圍為 nums 大小減 1 的 1,執行
    • nums[i] := nums[i] + nums[i-1]
  • 對於範圍為 nums 大小減 1 到 -1,遞減 1,執行
    • 如果 nums[i]<=k,那麼
      • 返回 i
  • 返回 -1

讓我們檢視以下實現以獲得更好的理解 -

示例

 現場演示

class Solution:
   def solve(self, nums, k):
      for i in range(1,len(nums)):
         nums[i]+=nums[i-1]
         for i in range(len(nums)-1,-1,-1):
            if nums[i]<=k:
                return i
      return -1
ob = Solution()
nums = [4, -7, 5, 2, 6]
k = 5
print(ob.solve(nums, k))

輸入

[4, -7, 5, 2, 6], 5

輸出

3

更新於: 2020 年 9 月 23 日

405 次瀏覽

Начните вашу карьеру

Получите сертификат, пройдя курс

Начать
Реклама