num이라는 숫자 목록과 다른 값 k가 있다고 가정합니다. 이제 목록의 모든 요소에서 1을 뺄 수 있는 연산을 고려해 보겠습니다. 이 작업을 k번 수행할 수 있습니다. 이러한 작업을 k 수행한 후 목록에서 가능한 최소 최대값을 찾아야 합니다.
따라서 입력이 nums =[3, 4, 6, 5] k =6과 같으면 출력은 3이 됩니다. 4를 한 번, 6을 세 번, 5를 두 번 줄여 [3,3,3, 3].
이 문제를 해결하기 위해 다음 단계를 따릅니다.
- 역순으로 숫자 정렬
- i :=0
- curr :=nums[0]
- k> 0일 때 수행
- i
- 나는 :=나는 + 1
- i
- k>=i이면
- k :=k - 나는
- curr :=curr - 1
- 그렇지 않으면
- 반환 통화
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
예시
class Solution: def solve(self, nums, k): nums.sort(reverse=True) i = 0 curr = nums[0] while k > 0: while i < len(nums) and nums[i] == curr: i += 1 if k >= i: k -= i curr -= 1 else: return curr return curr ob = Solution() nums = [3, 4, 6, 5] k = 6 print(ob.solve(nums, k))
입력
[3, 4, 6, 5], 6
출력
3