1099 Two Sum Less Than K
Given an array nums of integers and integer k, return the maximum sum such that there exists i < j with nums[i] + nums[j] = sum and sum < k. If no i, j exist satisfying this equation, return -1.
Example 1:
Input: nums = [34,23,1,24,75,33,54,8], k = 60
Output: 58
Explanation: We can use 34 and 24 to sum 58 which is less than 60.
Example 2:
Input: nums = [10,20,30], k = 15
Output: -1
Explanation: In this case it is not possible to get a pair sum less that 15.
Solution
class Solution {
public int twoSumLessThanK(int[] nums, int k) {
// base case
int result = -1;
if (nums == null || nums.length < 2){
return result;
}
Arrays.sort(nums);
int left = 0;
int right = nums.length -1;
while(left < right){
int sum = nums[left] + nums[right];
if (sum < k){
result = Math.max(result, sum);
left++;
}else {
right--;
}
}
return result;
}
}
// TC: O(nlogn)
// SC: O(1)