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

Python을 사용하여 세 번의 이동에서 가장 큰 값과 가장 작은 값의 최소 차이를 찾는 프로그램

<시간/>

num이라는 배열이 있다고 가정합니다. 이 배열의 한 요소를 한 번에 원하는 값으로 변경할 수 있습니다. 최대 3개의 동작을 수행한 후 num의 가장 큰 값과 가장 작은 값 사이의 최소 차이를 찾아야 합니다.

따라서 입력이 nums =[3,7,2,12,16]과 같으면 주어진 배열을 [1,1,0,1,1]로 만들 수 있으므로 출력은 1이 됩니다. 따라서 최대값은 1이고 최소값은 0이므로 차이는 1입니다.

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

  • 숫자의 크기가 <=4이면

    • 0 반환

  • 목록 번호 정렬

  • ans :=무한대

  • 범위 0에서 3까지의 i에 대해 수행

    • mi :=숫자[i]

    • ma :=nums[숫자의 길이 -(3-i+1)]

    • ans :=ma-mi 및 ans의 최소값

  • 반환

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

예시

def solve(nums):
   if len(nums) <= 4:
      return 0
   nums.sort()
   ans = float("inf")
   for i in range(4):
      mi = nums[i]
      ma = nums[-(3-i+1)]
      ans = min(ma-mi,ans)
   return ans
nums = [3,7,2,12,16]
print(solve(nums))

입력

[3,7,2,12,16]

출력

1