Program to find max values of sublists of size k in Python

PythonServer Side ProgrammingProgramming

Suppose we have a list nums and another value k, we have to find the maximum values of each sublist of size k.

So, if the input is like nums = [12, 7, 3, 9, 10, 9] k = 3, then the output will be [12, 9, 10, 10]

To solve this, we will follow these steps −

  • if k > size of nums, then

    • return a blank list

  • res := a new list

  • temp := nums[0]

  • temp := npoint := 0

  • for i in range 0 to k − 1, do

    • if nums[i] > temp, then

      • temp := nums[i]

      • point := i

  • insert temp at the end of res

  • for i in range k to size of nums, do

    • if nums[i] < temp and (i − point) < k, then

      • temp := nums[point]

    • otherwise when nums[i] < temp and (i − point) >= k, then

      • point := i − k + 1

      • for j in range i − k + 1 to i, do

        • if nums[j] > nums[point], then

          • point := j

      • temp := nums[point]

    • otherwise,

      • temp := nums[i]

      • point := i

    • insert temp at the end of res

  • return res

Let us see the following implementation to get better understanding −

Example

 Live Demo

class Solution:
   def solve(self, nums, k):
      if k > len(nums):
         return []
      res = []
      temp = nums[0]
      point = 0
      for i in range(k):
         if nums[i] > temp:
            temp = nums[i]
            point = i
      res.append(temp)
      for i in range(k, len(nums)):
         if nums[i] < temp and (i − point) < k:
            temp = nums[point]
         elif nums[i] < temp and (i − point) >= k:
            point = i − k + 1
            for j in range(i − k + 1, i + 1):
               if nums[j] > nums[point]:
                  point = j
            temp = nums[point]
         else:
            temp = nums[i]
            point = i
         res.append(temp)
      return res
ob = Solution()
nums = [12, 7, 3, 9, 10, 9]
k = 3
print(ob.solve(nums, k))

Input

[12, 7, 3, 9, 10, 9], 3

Output

[12, 9, 10, 10]
raja
Published on 15-Dec-2020 17:13:16
Advertisements