首页 > 其他 > 详细

LeetCode #1099. Two Sum Less Than K

时间:2020-12-01 13:57:53      阅读:31      评论:0      收藏:0      [点我收藏+]

题目

1099. Two Sum Less Than K


解题方法

先排序,然后调用二分查找函数获取比 k 小的第一个数的下标 end,设置 start = 0,当 start < end 时做循环,计算 nums[start] + nums[end] 的值 Sum,判断 Sum 和 k 的关系,如果 Sum >= k 就把 end 减1,否则 start + 1 后更新和的最大值 maxsum。循环结束后返回 maxsum。
时间复杂度:O(nlogn)
空间复杂度:O(1)


代码

class Solution:
    def binarySearch(self, nums, left, right, k):
        while left <= right:
            mid = (left + right) // 2
            if nums[mid] == k:
                return mid
            elif nums[mid] > k:
                right = mid - 1
            else:
                left = mid + 1
        return right
    
    def twoSumLessThanK(self, nums: List[int], k: int) -> int:
        nums.sort()
        start = 0
        end = self.binarySearch(nums, start, len(nums) - 1, k)
        maxsum = -1
        
        while start < end:
            Sum = nums[start] + nums[end]
            if Sum >= k:
                end -= 1
            else:
                start += 1
                maxsum = max(maxsum, Sum)
        
        return maxsum

LeetCode #1099. Two Sum Less Than K

原文:https://www.cnblogs.com/RatsCommander/p/14067444.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!