- Related Questions & Answers
- Program to find longest equivalent sublist after K increments in Python
- Python program to find the most occurring character and its count
- The most occurring number in a string using Regex in python
- Java Program to Find the Number Occurring Odd Number of Times
- Count substrings with each character occurring at most k times in C++
- Program to find minimum possible maximum value after k operations in python
- Program to find string after deleting k consecutive duplicate characters in python
- Program to find state of prison cells after k days in python
- C/C++ Program to Find the Number Occurring Odd Number of Times?
- Program to find minimum number colors remain after merging in Python
- Python program to find the number occurring odd number of times using Lambda expression and reduce function
- Program to check whether palindrome can be formed after deleting at most k characters or not in python
- How to Identify Most Frequently Occurring Items in a Sequence with Python?
- Program to find maximum difference of adjacent values after deleting k numbers in python
- Program to find minimum cost to reach final index with at most k steps in python

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

Suppose we have a list of numbers called nums and another value k. Let us consider an operation where we increase some element by one. We can perform at most k times, we have to find the value of the most frequently occurring number we can obtain. If there are more than one solution, select the smallest possible number.

So, if the input is like nums = [1, 0, 0, 0, 8, 8, 8, 8] k = 8, then the output will be 8, as we can increase 1, 7 times to get 8, and increase any 0 to 1, so, we get [8, 1, 0, 0, 8, 8, 8, 8]. So the result is 8.

To solve this, we will follow these steps:

- sort the list nums
- low := 0, high := 0
- dist := 0, best := 0
- ret := -1
- while high < size of nums, do
- if high > 0 and nums[high] is not same as nums[high - 1], then
- dist := dist +(high - low) *(nums[high] - nums[high - 1])

- high := high + 1
- while dist > k, do
- dist := dist - nums[high - 1] - nums[low]
- low := low + 1

- if high - low > best, then
- best := high - low
- ret := nums[high - 1]

- return ret

- if high > 0 and nums[high] is not same as nums[high - 1], then

Let us see the following implementation to get better understanding:

class Solution: def solve(self, nums, k): nums.sort() low, high = 0, 0 dist = 0 best = 0 ret = -1 while high < len(nums): if high > 0 and nums[high] != nums[high - 1]: dist += (high - low) * (nums[high] - nums[high - 1]) high += 1 while dist > k: dist -= nums[high - 1] - nums[low] low += 1 if high - low > best: best = high - low ret = nums[high - 1] return ret ob = Solution() nums = [1, 0, 0, 0, 8, 8, 8, 8] k = 8 print(ob.solve(nums, k))

[1, 0, 0, 0, 8, 8, 8, 8], 8

8

Advertisements