欢迎光临散文网 会员登陆 & 注册

解题报告 - 小于K的两数之和

2022-10-06 14:02 作者:大涛先生_  | 我要投稿

解题报告    - 小于K的两数之和

LeetCode 小于K的两数之和

@TOC

题目描述

 给你一个整数数组 nums 和整数 k ,返回最大和 sum ,满足存在 i < j 使得 nums[i] + nums[j] = sumsum < k 。如果没有满足此等式的 i,j 存在,则返回 -1


示例:

1输入:nums = [34,23,1,24,75,33,54,8], k = 60 输出:58

提示:

1<= nums.length <= 100
21 <= nums[i] <= 1000
31 <= k <= 2000
4

一、解题关键词

1最大和
2i<j
3sum < k

二、解题报告

1.思路分析

  1. 指定是需要一个循环的

  2. 题目给出的数组是无序的

  3. 最大和Sum 也就是需要找到一个最接近的值

  4. 最接近 需要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{} 


解题报告 - 小于K的两数之和的评论 (共 条)

分享到微博请遵守国家法律