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
- 如果 nums[i]<=k,那麼
- 返回 -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
Реклама