สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องตรวจสอบว่ามีรายการย่อยหรือไม่ โดยที่ผลรวมของตัวเลขนั้นมากกว่าผลรวมทั้งหมดของรายการอย่างเคร่งครัด
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[1, −2, 3, 4] ผลลัพธ์จะเป็น True เนื่องจากผลรวมของรายการคือ 6 และผลรวมของรายการย่อย [3, 5] คือ 8 ซึ่งก็คือ ใหญ่ขึ้นอย่างเคร่งครัด
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ทั้งหมด :=ผลรวมของจำนวนองค์ประกอบ
-
s :=0
-
สำหรับแต่ละ i ใน nums ทำ
-
s :=s + ผม
-
ถ้า s <0 แล้ว
-
คืนค่า True
-
-
-
s :=0
-
ผม :=ขนาดของ nums − 1
-
ในขณะที่ i> -1 ทำ
-
s :=s + nums[i]
-
ถ้า s <0 แล้ว
-
คืนค่า True
-
-
ผม :=ผม − 1
-
-
คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, nums): total = sum(nums) s = 0 for i in nums: s += i if s < 0: return True s = 0 i = len(nums) − 1 while i > −1: s += nums[i] if s < 0: return True i = i − 1 return False ob1 = Solution() nums = [2, -4, 3, 5] print(ob1.solve(nums))
อินพุต
[2, −4, 3, 5]
ผลลัพธ์
True