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

2022-10-06  本文已影响0人  大涛先生

LeetCode 小于K的两数之和

@TOC

题目描述

给你一个整数数组 nums 和整数 k ,返回最大和 sum ,满足存在 i < j 使得 nums[i] + nums[j] = sumsum < 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.思路分析

  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;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{} 

上一篇下一篇

猜你喜欢

热点阅读