Python中小於K的二數之和


假設我們有一個整數陣列A和另一個給定的整數K。我們需要找到最大的S,使得存在i < j且A[i] + A[j] = S,並且S < K。如果不存在滿足此等式的i、j,則返回-1。例如,如果A = [34,23,1,24,75,33,54,8]且K = 60,則輸出將為58,因為我們可以使用34和24相加得到58,小於60。

為了解決這個問題,我們將遵循以下步驟:

  • res = -1
  • 如果A只有一個元素,則返回-1
  • 對於範圍從0到A長度的i
    • 對於範圍從i+1到A長度的j
      • temp = A[i] + A[j]
      • 如果temp < K,則res = res和temp中的最大值
  • 返回res

示例(Python)

讓我們看下面的實現來更好地理解:

 線上演示

class Solution(object):
   def twoSumLessThanK(self, A, K):
      ans = -1
      if len(A)==1:
         return -1
      for i in range(len(A)):
         for j in range(i+1,len(A)):
            temp = A[i]+ A[j]
            if temp<K:
               ans = max(ans,temp)
      return ans
ob1 = Solution()
print(ob1.twoSumLessThanK([34,23,1,24,75,33,54,8],60))

輸入

[34,23,1,24,75,33,54,8]
60

輸出

58

更新於:2020年4月28日

772 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.