สมมติว่าเรามีรายการตัวเลข nums และจำนวนเต็ม k เราต้องหาค่าสูงสุดที่เป็นไปได้ i โดยที่ nums[0] + nums[1] + ... + nums[i] ≤ k เราจะส่งคืน -1 หากไม่มี i ที่ถูกต้อง
ดังนั้น ถ้าอินพุตเป็น nums =[4, -7, 5, 2, 6], k =5 ผลลัพธ์จะเป็น 3 ดัชนีจะเป็น 3 เหมือนกับว่าเราบวก 4+(-7)+5+2 =4 นี่น้อยกว่า k ถ้าเราเพิ่มองค์ประกอบสุดท้าย มันจะไม่น้อยกว่า k ดังนั้นดัชนีจึงเป็น 3
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- สำหรับฉันในช่วง 1 ถึงขนาดของ nums - 1 ทำ
- nums[i] :=nums[i] + nums[i-1]
- สำหรับ i ในขนาดช่วงของ nums -1 ถึง -1, ลดลง 1, do
- ถ้า nums[i]<=k แล้ว
- คืนผม
- ถ้า 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