두 개의 목록 L1과 L2가 있다고 가정하고 L1의 숫자와 L2의 숫자 사이에서 가장 작은 차이를 찾아야 합니다.
따라서 입력이 L1 =[2, 7, 4], L2 =[16, 10, 11]과 같으면 가장 작은 차이가 10 - 7 =3이므로 출력은 3이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 목록 L1 정렬 및 목록 L2 정렬
- ans :=무한대
- i :=0, j :=0
- i
- ans :=ans 및 |L1[i] - L2[j]|
의 최소값- L1[i]
- 나는 :=나는 + 1
- j :=j + 1
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def solve(self, L1, L2): L1.sort() L2.sort() ans = float("inf") i = j = 0 while i < len(L1) and j < len(L2): ans = min(ans, abs(L1[i] - L2[j])) if L1[i] < L2[j]: i += 1 else: j += 1 return ans ob = Solution() L1 = [2, 7, 4] L2 = [16, 10, 11] print(ob.solve(L1, L2))
입력
[2, 7, 4], [16, 10, 11]
출력
3