สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และอีกค่าหนึ่งคือ k ตอนนี้ให้เราพิจารณาการดำเนินการที่เราลบ 1 จากองค์ประกอบใด ๆ ในรายการ เราสามารถดำเนินการนี้ได้ k ครั้ง เราต้องหาค่าสูงสุดต่ำสุดที่เป็นไปได้ในรายการหลังจาก k การดำเนินการดังกล่าว
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3, 4, 6, 5] k =6 แล้วผลลัพธ์จะเป็น 3 เนื่องจากเราลดได้ 4 ครั้ง 6 ครั้ง และ 5 ครั้งเพื่อให้ได้ [3,3,3, 3].
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:
- เรียงลำดับตัวเลขย้อนกลับ
- ผม :=0
- curr :=nums[0]
- ในขณะที่ k> 0, ทำ
- ในขณะที่ i <ขนาดของ nums และ nums[i] เหมือนกับ curr ให้ทำ
- ผม :=ผม + 1
- ถ้า k>=i แล้ว
- k :=k - ฉัน
- curr :=curr - 1
- มิฉะนั้น
- คืนสกุลเงิน
- ในขณะที่ i <ขนาดของ nums และ nums[i] เหมือนกับ curr ให้ทำ
- คืนสกุลเงิน
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:
ตัวอย่าง
class Solution: def solve(self, nums, k): nums.sort(reverse=True) i = 0 curr = nums[0] while k > 0: while i < len(nums) and nums[i] == curr: i += 1 if k >= i: k -= i curr -= 1 else: return curr return curr ob = Solution() nums = [3, 4, 6, 5] k = 6 print(ob.solve(nums, k))
อินพุต
[3, 4, 6, 5], 6
ผลลัพธ์
3