สมมติว่าเรามีจำนวนอาร์เรย์และค่าอื่น 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