Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาค่าสูงสุดที่เป็นไปได้ต่ำสุดหลังจากการดำเนินการ k ใน python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า 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
    • มิฉะนั้น
      • คืนสกุลเงิน
  • คืนสกุลเงิน

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:

ตัวอย่าง

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