nums라는 숫자가 있고 또 다른 값 k가 있다고 가정합니다. nums에서 k개의 요소를 제거하면 (최대 nums - 최소 nums)의 최소값을 찾습니다.
따라서 입력이 nums =[4, 10, 3, 2, 8, 9] k =3과 같으면 출력은 2가 됩니다. 왜냐하면 10, 8, 9를 제거하면 최대값은 4이고 최소값은 2이기 때문입니다. 따라서 차이는 2입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
목록 번호 정렬
-
p :=숫자 크기 - k
-
m :=(nums의 마지막 요소) - nums[0]
-
범위 0에서 숫자 크기 - p의 i에 대해 수행
-
nums[i + p - 1] - nums[i]
-
m :=숫자[i + p - 1] - 숫자[i]
-
-
-
리턴 m
예시
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
def solve(nums, k): nums = sorted(nums) p = len(nums) - k m = nums[-1] - nums[0] for i in range(0, len(nums) - p + 1): if nums[i + p - 1] - nums[i] < m: m = nums[i + p - 1] - nums[i] return m nums = [10, 4, 3, 2, 9, 8] k = 3 print(solve(nums, k))
입력
[10, 4, 3, 2, 9, 8], 3
출력
2