Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 K 및 -K

<시간/>

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일 때
        • 현재 루프에서 빠져나오기
  • 반환 -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