K and -K in Python

Suppose we have a list of numbers called nums, we have to find the largest number k where k and -k both exist in nums (they can be the same number). If there's no such element, return -1.

So, if the input is like [-5, 2, 9, -6, 5, -9], then the output will be 9.

To solve this, we will follow these steps −

  • L1:= a list of 0 and positive elements in nums
  • L2:= a list of 0 and negative elements in nums
  • sort L1 in reverse order
  • sort the list L2
  • for each i in L1, do
    • for each j in L2, do
      • if i+j is same as 0, then
        • return i
      • otherwise when i+j > 0 , then
        • come out from the current loop
  • return -1

Let us see the following implementation to get better understanding −


 Live Demo

class Solution:
   def solve(self, nums):
      L1=[i for i in nums if i>=0]
      L2=[i for i in nums if i<=0]
      for i in L1:
         for j in L2:
            if i+j==0:
               return i
            elif i+j>0:
      return -1
ob = Solution()
nums = [-5, 2, 9, -6, 5, -9]


[-5, 2, 9, -6, 5, -9]