Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 크기가 k인 하위 목록의 최대값을 찾는 프로그램

<시간/>

목록 num과 또 다른 값 k가 있다고 가정하면 크기가 k인 각 하위 목록의 최대값을 찾아야 합니다.

따라서 입력이 nums =[12, 7, 3, 9, 10, 9] k =3과 같으면 출력은 [12, 9, 10, 10]

이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • k> 숫자의 크기인 경우

    • 빈 목록 반환

  • res :=새 목록

  • 임시 :=숫자[0]

  • 온도 :=npoint :=0

  • 0에서 k − 1 범위의 i에 대해 다음을 수행합니다.

    • nums[i]> temp이면

      • 임시 :=숫자[i]

      • 포인트 :=나는

  • res의 끝에 temp 삽입

  • k 범위에서 숫자 크기까지의 i에 대해

    • nums[i]

      • temp :=숫자[포인트]

    • 그렇지 않으면 nums[i] =k일 때

      • 포인트 :=i − k + 1

      • 범위 i − k + 1에서 i까지의 j에 대해 수행

        • nums[j]> nums[point]이면

          • 포인트 :=j

      • temp :=숫자[포인트]

    • 그렇지 않으면

      • 임시 :=숫자[i]

      • 포인트 :=나는

    • res의 끝에 temp 삽입

  • 반환 해상도

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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))

입력

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

출력

[12, 9, 10, 10]