[LeetCode] 3Sum Closest

本文详细介绍了如何通过参考和借鉴大神戴方勤的leetcode题解进行算法学习和刷题的过程。文章重点讨论了一个名为Solution的类,该类包含了解决三数之和最接近目标值的问题。通过排序数组并使用双指针法,作者实现了高效寻找最接近目标值的三元组解决方案。

算法渣,现实基本都参考或者完全拷贝[戴方勤(soulmachine@gmail.com)]大神的leetcode题解,此处仅作刷题记录。

 

 1 class Solution {
 2 public:
 3     int threeSumClosest(vector<int> &num, int target) {
 4         int result = 0;
 5         int min_gap = INT_MAX;
 6 
 7         sort(num.begin(), num.end()); // 排序
 8 
 9         auto last = num.end();
10         for (auto a = num.begin(); a < prev(last, 2); ++a) {
11             auto b = next(a);
12             auto c = prev(last);
13             while (b < c) {
14                 const int sum = *a + *b + *c;
15                 const int gap = abs(sum - target);
16 
17                 if (gap < min_gap) {
18                     result = sum;
19                     min_gap = gap;
20                 }
21 
22                 if (sum < target)
23                     ++b;
24                 else
25                     --c;
26             }
27         }
28 
29         return result;
30     }
31 };

 

转载于:https://www.cnblogs.com/Azurewing/p/4307611.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值