LeetCode 小于K的两数之和
@TOC
题目描述
给你一个整数数组
nums
和整数k
,返回最大和sum
,满足存在i < j
使得nums[i] + nums[j] = sum
且sum < k
。如果没有满足此等式的i,j
存在,则返回-1
。
xxxxxxxxx
示例:
1输入:nums = [34,23,1,24,75,33,54,8], k = 60 输出:58
提示:
11 <= nums.length <= 10021 <= nums[i] <= 100031 <= k <= 20004
一、解题关键词
1最大和2i<j3sum < 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;1011 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;2122 }23}
4.知识点
1指定是需要一个循环的21、for32、while43、do()while{}
网友评论