Skip to content

1099. Two Sum Less Than K 👍

  • Time: $O(\texttt{sort})$
  • Space: $O(\texttt{sort})$
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
 public:
  int twoSumLessThanK(vector<int>& nums, int k) {
    if (nums.size() < 2)
      return -1;

    int ans = -1;  // Note the constraint that nums[i] > 0.
    int l = 0;
    int r = nums.size() - 1;

    ranges::sort(nums);

    while (l < r)
      if (nums[l] + nums[r] < k) {
        ans = max(ans, nums[l] + nums[r]);
        ++l;
      } else {
        --r;
      }

    return ans;
  }
};
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
  public int twoSumLessThanK(int[] nums, int k) {
    if (nums.length < 2)
      return -1;

    int ans = -1; // Note the constraint that nums[i] > 0.
    int l = 0;
    int r = nums.length - 1;

    Arrays.sort(nums);

    while (l < r)
      if (nums[l] + nums[r] < k) {
        ans = Math.max(ans, nums[l] + nums[r]);
        ++l;
      } else {
        --r;
      }

    return ans;
  }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
class Solution:
  def twoSumLessThanK(self, nums: list[int], k: int) -> int:
    if len(nums) < 2:
      return -1

    ans = -1  # Note the constrathat nums[i] > 0.
    l = 0
    r = len(nums) - 1

    nums.sort()

    while l < r:
      if nums[l] + nums[r] < k:
        ans = max(ans, nums[l] + nums[r])
        l += 1
      else:
        r -= 1

    return ans