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