文章目录

  • 1. 题目
  • 2. 解题
    • 2.1 暴力
    • 2.2 二分查找

1. 题目

给你一个整数数组 A 和一个整数 K,请在该数组中找出两个元素,使它们的和小于 K尽可能地接近 K,返回这两个元素的和。

如不存在这样的两个元素,请返回 -1。

示例 1:
输入:A = [34,23,1,24,75,33,54,8], K = 60
输出:58
解释:
34 和 24 相加得到 58,58 小于 60,满足题意。示例 2:
输入:A = [10,20,30], K = 15
输出:-1
解释:
我们无法找到和小于 15 的两个元素。提示:
1 <= A.length <= 100
1 <= A[i] <= 1000
1 <= K <= 2000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum-less-than-k
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 暴力

class Solution {public:int twoSumLessThanK(vector<int>& A, int K) {int i, j, n = A.size(), sum, mindiff = INT_MAX;for(i = 0; i < n-1; ++i){for(j = i + 1; j < n; ++j){if(A[i]+A[j] < K && K-A[i]-A[j] < mindiff){mindiff = K-A[i]-A[j];sum = A[i]+A[j];}}}return mindiff==INT_MAX ? -1 : sum;}
};

4 ms 9.2 MB

2.2 二分查找

  • 排序
  • 固定一个数,二分查找另一个数
class Solution {public:int twoSumLessThanK(vector<int>& A, int K) {sort(A.begin(), A.end());int sum, mindiff = INT_MAX, l, r, mid, t;for(int i = 0; i < A.size(); ++i){l = 0, r = A.size()-1;t = K-A[i];//找到小于t的最大数while(l <= r){mid = l+((r-l)>>1);if(A[mid] >= t)r = mid-1;else{if(mid==A.size()-1 || A[mid+1] >= t){ //找到了 if(mid != i && K-A[mid]-A[i] < mindiff){  //不是同一个数,且更接近mindiff = K-A[mid]-A[i];sum = A[mid]+A[i];}break;}elsel = mid+1;}}}return mindiff==INT_MAX ? -1 : sum;}
};

4 ms 9.1 MB


长按或扫码关注我的公众号,一起加油、一起学习进步!

LeetCode 1099. 小于 K 的两数之和(二分查找)相关推荐

  1. java 1099_【LeetCode(Java) - 1099】小于 K 的两数之和

    [LeetCode(Java) - 1099]小于 K 的两数之和 [LeetCode(Java) - 1099]小于 K 的两数之和 文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 ...

  2. LeetCode第 3 场双周赛(2019.6.29)第一题:小于 K 的两数之和

    5021. 小于 K 的两数之和 给你一个整数数组 A 和一个整数 K,请在该数组中找出两个元素,使它们的和小于 K 但尽可能地接近 K,返回这两个元素的和. 如不存在这样的两个元素,请返回 -1. ...

  3. bigdecimal 小于等于0_图解小于 K 的两数之和

    点击蓝色"五分钟学算法"关注我哟 加个"星标",天天中午 12:15,一起学算法 作者 | P.yh 来源 | 五分钟学算法 题目描述 题目来源于 LeetCo ...

  4. 【leetcode】 算法题1 两数之和

    [leetcode] 算法题1 两数之和 问题   给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums ...

  5. leetcode 第1题【两数之和】C语言

    leetcode 第1题[两数之和] 今天开始刷 leetcode 了,坚持每天做 因为不太会编程,只是想记录下来,若有错误,欢迎指正. /*** Note: The returned array m ...

  6. leetCode刷题-第二题两数之和

    两数之和 题目连接: 题目链接 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表示和的 ...

  7. LeetCode(合集)两数之和总结 (1,167,1346)

    1.两数之和 167. 两数之和 II - 输入有序数组 golang 1346. 检查整数及其两倍数是否存在 一个数组是否存在两个数是target的整数倍? 如果有人知道这是LeetCode哪个题, ...

  8. LeetCode第1题:两数之和

    生命无罪,健康万岁,我是laity. 我曾七次鄙视自己的灵魂: 第一次,当它本可进取时,却故作谦卑: 第二次,当它在空虚时,用爱欲来填充: 第三次,在困难和容易之间,它选择了容易: 第四次,它犯了错, ...

  9. LeetCode篇:1(两数之和)

    1:两数之和 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 暴力破解 源码: int* twoSum(int* nums, int numsSize, int target, int* r ...

最新文章

  1. 判断网络连接(要验证)
  2. 利用keepalived和haproxy配置mysql的高可用负载均衡
  3. python中path语句什么意思_python中jsonpath模块有何用法?
  4. boost::sort模块实现spreadsort 键和数据排序示例
  5. 浅谈一个缓存小实践,另外还有更多案例,欢迎关注~
  6. SAP 电商云 Spartacus UI Proxy Facade 的一个实际例子
  7. linux系统awk、sed,Linux系统 linux awk sed
  8. layey图片内容不居中
  9. idea 出现 GC overhead limit exceed解决
  10. 软考中级网络工程师学习笔记(知识点汇总)简略版
  11. BAT面试高级进阶,Java架构师之路
  12. bp神经网络的算法步骤,BP神经网络算法流程图
  13. 【OpenCV 例程200篇】20. 图像的按位运算(cv2.bitwise)
  14. 安卓各国语言对应缩写和时区查询
  15. 【面试】Tomcat面试题
  16. gin embed打包静态资源文件
  17. Java Fork/Join与协程
  18. Nginx 相关问题(持续更新一:Cookie问题)
  19. 奥巴马胜选演说·文言版【ZZ】
  20. Android 百度地图SDK 实现获取周边位置POI

热门文章

  1. html中的url、href、src的区别
  2. 电脑开机3秒就重启循环_电脑修好后客户不愿支付上门费,行,那电脑开机60秒自动关机吧!...
  3. 如何通俗易懂地解释欧拉公式(e^πi+1=0)?
  4. 计算机教师研修计划书,教师信息技术个人研修计划书
  5. 2019春第六周编程总结
  6. Go语言之高级篇beego框架之参数配置与路由配置
  7. 51nod 1379 索函数
  8. asp.net中ADO.NET连接SQL数据库代码和连接Access数据库代码
  9. (待解)静态构造器和静态字段调用的相互嵌套
  10. 生产者-消费者模式的实现