주문과 물약의 성공적인 쌍

1587 단어 theabbieleetcodedsa
길이가 각각 spellspotions인 두 개의 양의 정수 배열 nm가 제공됩니다. 여기서 spells[i]ith 주문의 강도를 나타내고 potions[j]jth의 강도를 나타냅니다. ) 물약.

정수success도 제공됩니다. 주문과 물약 쌍은 강점의 곱이 최소 success인 경우 성공한 것으로 간주됩니다.

길이가 pairs인 정수 배열n을 반환합니다. 여기서 pairs[i]ith 주문과 성공적인 쌍을 형성할 물약의 수입니다.

예 1:

입력: 주문 = [5,1,3], 물약 = [1,2,3,4,5], 성공 = 7
출력: [4,0,3]
설명:
  • 0번째 주문: 5 * [1,2,3,4,5] = [5,10,15,20,25]. 4쌍 성공.
  • 첫 번째 주문: 1 * [1,2,3,4,5] = [1,2,3,4,5]. 0 쌍이 성공했습니다.
  • 두 번째 주문: 3 * [1,2,3,4,5] = [3,6,9,12,15]. 3쌍 성공.
    따라서 [4,0,3]이 반환됩니다.

  • 예 2:

    입력: 주문 = [3,1,2], 물약 = [8,5,8], 성공 = 16
    출력: [2,0,2]
    설명:
  • 0번째 주문: 3 * [8,5,8] = [24,15,24]. 2쌍 성공.
  • 첫 번째 주문: 1 * [8,5,8] = [8,5,8]. 0 쌍이 성공했습니다.
  • 두 번째 주문: 2 * [8,5,8] = [16,10,16]. 2쌍 성공.
    따라서 [2,0,2]가 반환됩니다.

  • 제약:
  • n == spells.length
  • m == potions.length
  • 1 <= n, m <= 105
  • 1 <= spells[i], potions[i] <= 105
  • 1 <= success <= 1010

  • 해결책:

    import bisect
    
    class Solution:
        def successfulPairs(self, spells: List[int], potions: List[int], success: int) -> List[int]:
            n = len(potions)
            potions.sort()
            return [n - bisect.bisect_left(potions, success / sp) for sp in spells]
    

    좋은 웹페이지 즐겨찾기