Python中的K和-K


假设我们有一个名为nums的数字列表,我们需要找到最大的数字k,其中k和-k都存在于nums中(它们可以是同一个数字)。如果没有这样的元素,则返回-1。

因此,如果输入类似于[-5, 2, 9, -6, 5, -9],则输出将为9。

为了解决这个问题,我们将遵循以下步骤:

  • L1:nums中0和正数的列表
  • L2:nums中0和负数的列表
  • 按降序排列L1
  • 排列列表L2
  • 对于L1中的每个i:
    • 对于L2中的每个j:
      • 如果i+j等于0,则
        • 返回i
      • 否则,当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

更新于:2020年9月23日

698 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.