바위의 전체 용량을 가진 최대 가방

1716 단어 theabbieleetcodedsa
n에서 0까지 번호가 매겨진 n - 1 가방이 있습니다. 인덱스가 0인 정수 배열 capacityrocks 두 개가 제공됩니다. ith 가방은 최대 capacity[i]개의 돌을 담을 수 있으며 현재 rocks[i]개의 돌을 담고 있습니다. 가방에 넣을 수 있는 추가 돌의 수인 정수additionalRocks도 제공됩니다.

일부 가방에 추가 돌을 넣은 후 전체 용량을 가질 수 있는 최대 가방 수를 반환합니다.

예 1:

입력: 용량 = [2,3,4,5], 바위 = [1,2,4,4], 추가 바위 = 2
출력: 3
설명:
가방 0에 돌 1개를 넣고 가방 1에 돌 1개를 넣습니다.
이제 각 가방에 있는 돌의 수는 [2,3,4,4]입니다.
백 0, 1, 2의 용량이 가득 찼습니다.
가득 찬 가방이 3개 있으므로 3개를 반환합니다.
3개 이상의 가방을 가득 채울 수 없다는 것을 알 수 있습니다.
답이 3인 돌을 배치하는 다른 방법이 있을 수 있습니다.

예 2:

입력: 용량 = [10,2,2], 바위 = [2,2,0], 추가 바위 = 100
출력: 3
설명:
가방 0에 돌 8개, 가방 2에 돌 2개를 넣습니다.
이제 각 가방에 있는 돌의 수는 [10,2,2]입니다.
백 0, 1, 2의 용량이 가득 찼습니다.
가득 찬 가방이 3개 있으므로 3개를 반환합니다.
3개 이상의 가방을 가득 채울 수 없다는 것을 알 수 있습니다.
모든 추가 암석을 사용하지 않았다는 점에 유의하십시오.

제약:
  • n == capacity.length == rocks.length
  • 1 <= n <= 5 * 104
  • 1 <= capacity[i] <= 109
  • 0 <= rocks[i] <= capacity[i]
  • 1 <= additionalRocks <= 109

  • 해결책:

    class Solution:
        def maximumBags(self, capacity: List[int], rocks: List[int], additionalRocks: int) -> int:
            n = len(capacity)
            diff = [capacity[i] - rocks[i] for i in range(n)]
            diff.sort()
            print(diff)
            i = 0
            while additionalRocks > 0 and i < n:
                additionalRocks -= diff[i]
                i += 1
            if additionalRocks < 0:
                return i - 1
            return i
    

    좋은 웹페이지 즐겨찾기