LeetCode 1099. 小于 K 的两数之和(二分查找)
文章目录
- 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 的两数之和(二分查找)相关推荐
- java 1099_【LeetCode(Java) - 1099】小于 K 的两数之和
[LeetCode(Java) - 1099]小于 K 的两数之和 [LeetCode(Java) - 1099]小于 K 的两数之和 文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 ...
- LeetCode第 3 场双周赛(2019.6.29)第一题:小于 K 的两数之和
5021. 小于 K 的两数之和 给你一个整数数组 A 和一个整数 K,请在该数组中找出两个元素,使它们的和小于 K 但尽可能地接近 K,返回这两个元素的和. 如不存在这样的两个元素,请返回 -1. ...
- bigdecimal 小于等于0_图解小于 K 的两数之和
点击蓝色"五分钟学算法"关注我哟 加个"星标",天天中午 12:15,一起学算法 作者 | P.yh 来源 | 五分钟学算法 题目描述 题目来源于 LeetCo ...
- 【leetcode】 算法题1 两数之和
[leetcode] 算法题1 两数之和 问题 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums ...
- leetcode 第1题【两数之和】C语言
leetcode 第1题[两数之和] 今天开始刷 leetcode 了,坚持每天做 因为不太会编程,只是想记录下来,若有错误,欢迎指正. /*** Note: The returned array m ...
- leetCode刷题-第二题两数之和
两数之和 题目连接: 题目链接 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表示和的 ...
- LeetCode(合集)两数之和总结 (1,167,1346)
1.两数之和 167. 两数之和 II - 输入有序数组 golang 1346. 检查整数及其两倍数是否存在 一个数组是否存在两个数是target的整数倍? 如果有人知道这是LeetCode哪个题, ...
- LeetCode第1题:两数之和
生命无罪,健康万岁,我是laity. 我曾七次鄙视自己的灵魂: 第一次,当它本可进取时,却故作谦卑: 第二次,当它在空虚时,用爱欲来填充: 第三次,在困难和容易之间,它选择了容易: 第四次,它犯了错, ...
- LeetCode篇:1(两数之和)
1:两数之和 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 暴力破解 源码: int* twoSum(int* nums, int numsSize, int target, int* r ...
最新文章
- 判断网络连接(要验证)
- 利用keepalived和haproxy配置mysql的高可用负载均衡
- python中path语句什么意思_python中jsonpath模块有何用法?
- boost::sort模块实现spreadsort 键和数据排序示例
- 浅谈一个缓存小实践,另外还有更多案例,欢迎关注~
- SAP 电商云 Spartacus UI Proxy Facade 的一个实际例子
- linux系统awk、sed,Linux系统 linux awk sed
- layey图片内容不居中
- idea 出现 GC overhead limit exceed解决
- 软考中级网络工程师学习笔记(知识点汇总)简略版
- BAT面试高级进阶,Java架构师之路
- bp神经网络的算法步骤,BP神经网络算法流程图
- 【OpenCV 例程200篇】20. 图像的按位运算(cv2.bitwise)
- 安卓各国语言对应缩写和时区查询
- 【面试】Tomcat面试题
- gin embed打包静态资源文件
- Java Fork/Join与协程
- Nginx 相关问题(持续更新一:Cookie问题)
- 奥巴马胜选演说·文言版【ZZ】
- Android 百度地图SDK 实现获取周边位置POI
热门文章
- html中的url、href、src的区别
- 电脑开机3秒就重启循环_电脑修好后客户不愿支付上门费,行,那电脑开机60秒自动关机吧!...
- 如何通俗易懂地解释欧拉公式(e^πi+1=0)?
- 计算机教师研修计划书,教师信息技术个人研修计划书
- 2019春第六周编程总结
- Go语言之高级篇beego框架之参数配置与路由配置
- 51nod 1379 索函数
- asp.net中ADO.NET连接SQL数据库代码和连接Access数据库代码
- (待解)静态构造器和静态字段调用的相互嵌套
- 生产者-消费者模式的实现