สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และจำนวนเต็ม k เราต้องตรวจสอบว่าเราสามารถลบองค์ประกอบหนึ่งรายการออกจากรายการเพื่อให้ค่าเฉลี่ยเท่ากับ k ได้หรือไม่ ตอนนี้เราต้องจำไว้ว่า มีข้อจำกัดบางอย่าง -
- 2 ≤ n ≤ 1,000 โดยที่ n คือจำนวนองค์ประกอบของรายการ nums
- nums[i], k ≤ 1,000,000
ดังนั้น หากอินพุตเป็น [5,3,2,4,6,10], k =4 ผลลัพธ์จะเป็น True ราวกับว่าเราลบ 10 ดังนั้นค่าเฉลี่ยขององค์ประกอบจะเป็น (5+3+2+ 4+6)/5 =4 นี่เหมือนกับ k
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- s:=ผลรวมขององค์ประกอบทั้งหมดเป็น nums
- t :=k*(ขนาดของ nums - 1)
- สำหรับแต่ละ i ใน nums ทำ
- ถ้า s-i เหมือนกับ t แล้ว
- คืนค่า True
- ถ้า s-i เหมือนกับ t แล้ว
- คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, nums, k): s=sum(nums) t = k*(len(nums)-1) for i in nums: if s-i == t: return True return False ob = Solution() nums = [5,3,2,4,6,10] k = 4 print(ob.solve(nums, k))
อินพุต
[5,3,2,4,6,10], 4
ผลลัพธ์
True