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

โปรแกรมหาความถี่ขององค์ประกอบที่พบบ่อยที่สุดใน Python


สมมติว่าเรามีจำนวนอาร์เรย์และค่าอื่น k ในการดำเนินการเดียว เราสามารถเลือกดัชนีจำนวน nums และเพิ่มองค์ประกอบที่ดัชนีนั้นได้ 1 เราต้องหาความถี่สูงสุดที่เป็นไปได้ขององค์ประกอบหลังจากดำเนินการที่จำนวนการดำเนินการสูงสุด k ครั้ง

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[8,3,6], k =9 ผลลัพธ์จะเป็น 3 เพราะเราสามารถอัปเดต 3 คูณ 5, 6 คูณ 2 เพื่อให้เป็น [8,8,8] หลังจากดำเนินการ 7 ครั้ง เรามีความถี่สูงสุด 3 ครั้ง

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • เรียงเลขรายการ

  • ซ้าย :=0, ขวา :=1

  • ในขณะที่ถูกต้อง <ขนาดของ nums ทำ

    • k :=k -(nums[right] - nums[right-1]) *(ขวา - ซ้าย)

    • ถ้า k <0 แล้ว

      • k :=k + nums[right] - nums[left]

      • ซ้าย :=ซ้าย + 1

    • ขวา :=ขวา + 1

  • กลับขวา-ซ้าย

ตัวอย่าง

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

def solve(nums, k):
   nums.sort()
   left = 0
   right = 1

   while right < len(nums):
      k -= (nums[right] - nums[right-1]) * (right - left)

      if k < 0:
         k += nums[right] - nums[left]
         left += 1

      right += 1

   return right - left

nums = [8,3,6]
k = 9
print(solve(nums, k))

อินพุต

[8,3,6], 9

ผลลัพธ์

3