解题报告 - 小于K的两数之和
解题报告 - 小于K的两数之和
LeetCode 小于K的两数之和
@TOC
题目描述
给你一个整数数组
nums和整数k,返回最大和sum,满足存在i < j使得nums[i] + nums[j] = sum且sum < k。如果没有满足此等式的i,j存在,则返回-1。
示例:
1输入:nums = [34,23,1,24,75,33,54,8], k = 60 输出:58
提示:
11 <= nums.length <= 100
21 <= nums[i] <= 1000
31 <= k <= 2000
4
一、解题关键词
1最大和
2i<j
3sum < k
二、解题报告
1.思路分析
指定是需要一个循环的
题目给出的数组是无序的
最大和Sum 也就是需要找到一个最接近的值
最接近 需要Math.max() 或者进行排序
2.时间复杂度
3.代码示例
1class Solution {
2 public int twoSumLessThanK(int[] nums, int k) {
3 if (null == nums || nums.length < 1)return -1;
4 Arrays.sort(nums);
5
6 int len = nums.length;
7 int left = 0,right = len - 1;
8
9 int res = Integer.MIN_VALUE;
10
11 while(left < right){
12 int num = nums[left] + nums[right];
13 if (num>=k){
14 right --;
15 }else{
16 res = Math.max(res,num);
17 left++;
18 }
19 }
20 return res == Integer.MIN_VALUE? -1:res;
21
22 }
23}
4.知识点
1指定是需要一个循环的
21、for
32、while
43、do()while{}

