nums라는 숫자 목록이 있다고 가정하고 k와 -k가 모두 num에 존재하는 가장 큰 숫자 k를 찾아야 합니다(같은 숫자일 수 있음). 해당 요소가 없으면 -1을 반환합니다.
따라서 입력이 [-5, 2, 9, -6, 5, -9]와 같으면 출력은 9가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- L1:=숫자로 된 0 및 양수 요소 목록
- L2:=0 및 음수 요소의 목록
- L1을 역순으로 정렬
- 목록 L2 정렬
- L1의 각 i에 대해 다음을 수행합니다.
- L2의 각 j에 대해 다음을 수행합니다.
- i+j가 0과 같으면
- 반환
- 그렇지 않으면 i+j> 0일 때
- 현재 루프에서 빠져나오기
- i+j가 0과 같으면
- L2의 각 j에 대해 다음을 수행합니다.
- 반환 -1
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def solve(self, nums): L1=[i for i in nums if i>=0] L2=[i for i in nums if i<=0] L1.sort(reverse=True) L2.sort() for i in L1: for j in L2: if i+j==0: return i elif i+j>0: break return -1 ob = Solution() nums = [-5, 2, 9, -6, 5, -9] print(ob.solve(nums))
입력
[-5, 2, 9, -6, 5, -9]
출력
9