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