3Sum Closest
描述
Given an array S of n integers, find three integers in S such that the sum is closest to a given number,
target. Return the sum of the three integers. You may assume that each input would have exactly one
solution.
For example, given array S = {-1 2 1 -4}, and target = 1.
e sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

class Solution{
public:int threeSumCloest(vector<int>& num,int target){int result = 0;int min_gap = INT_MAX;sort(num.begin(),num.end());for(auto a = num.begin();a !=prev(num.end(),2); a = upper_bound(a,prev(num.end()),*a){auto b = next(a);auto c = prev(num.end());while(b < c){const int sum = *a + *b + *c;const int gap = abs(sum - target);if(gap < min_gap ) {result = sum ;min_gap = gap;}if(sum < target){b = upper_bound(b, c, *b);}else{c = prev(lower_bound(b, c, *c));}       }}return result;}
};

lower_bound(a, b, val):返回容器中第一个值【大于或等于】val的元素的iterator位置。

upper_bound(a, b, val):返回容器中第一个值【大于】

参考资料:

LeetCode题解

数组 -- 3Sum Closet -- 图解相关推荐

  1. 3sum、3Sum closet、 4sum

    1. 3Sum [题目] Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0 ...

  2. 【动态规划】01背包问题(滚动数组 + 手画图解)

    01背包除了可以用形象的二维动态数组表示外,还可以使用空间复杂度更低的一维滚动数组. 目录 文章目录 前言 一.滚动数组的基本理解 二.确定dp及其下标含义 三.确定递推公式 四.确定初始化 五.确定 ...

  3. java 数组 内存_图解Java数组的内存分配

    1. Java数组是静态的 Java是静态语言,所以Java的数组也是静态的,即:数组被初始化后,长度不可变 静态初始化:显式指定每个数组元素的初始值,系统决定数组长度 String[] books ...

  4. c语言数组的使用步骤,C语言中为什么要使用数组?详细图解数组的使用

    唉,有这么多不同主题的书.在哪里才能找到有关中国音乐的书呢? 数组是可以在内存中连续存储多个元素的结构 数组中的所有元素必须属于相同的数据类型 1.在计算机内存中,同一数组的所有元素按下标顺序依次存放 ...

  5. [ 1001] 动态开辟二维数组的说明

    开辟二维数组的说明 图解  [1][][][][] [2][][][][] [3][][][][] void main() { int i,j; /*注意申请的指针格式  先创建的是1,2,3首地址为 ...

  6. LeetCode -- 3Sum

    Question: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? F ...

  7. [LeetCode]#13 3sum

    一.题目 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find a ...

  8. Java语言基础(数组)

    Java语言基础(数组概述和定义格式说明) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数 ...

  9. java基数排序 数组_万字长文带你掌握Java数组与排序,代码实现原理都帮你搞明白!...

    查找元素索引位置 基本查找 根据数组元素找出该元素第一次在数组中出现的索引 public class TestArray1 { public static void main(String[] arg ...

  10. [转载] JAVA笔记_(Day04,Day05)函数数组

    参考链接: 了解Java中的数组IndexOutofbounds异常 文章目录 函数定义练习误区重载(overload)重载选择题练习函数的内存调用问题 数组定义数组的内存图解数组的常见问题应用求和最 ...

最新文章

  1. bat curl 返回值_bat curl 发送http请求 监控网站
  2. app息屏后ajax请求不执行_息屏时钟app下载-息屏时钟软件下载v1.0 安卓版
  3. iOS开发系列--网络开发(转)
  4. 教怎样写好一份“漏洞报告”
  5. oracle命令未正确结束_详解Oracle数据库终止正在进行expdp导出数据的正确操作
  6. 做python自动化得时候怎么添加断言_在编写Web自动化测试用例的时候,如何写断言使新手不解,严格意义上来讲,没有断言的自动化脚本不能叫测试用例。就像功能测试一样,当测试人员做了一些操作...
  7. [翻译]QUIC 与 HTTP/3:太过庞大而致失败?-- 论导致 QUIC 失败的因素
  8. python的tool模块_barktools-包含各种有用的python模块和脚本的包-Oscar Bark Modules Scripts...
  9. 【渝粤题库】陕西师范大学700004 植物生理学
  10. FZU - 2037 -Maximum Value Problem(规律题)
  11. python3.6 websocket异步高并发_在Python3.6上的websocket客户端中侦听传入消息时出现问题...
  12. 中班机器人上课视频_家委会:出班费买智能扫地机器人,不用家长搞卫生了,莫名其妙...
  13. javascript 参数检验(二):参数检查工具的完善
  14. myeclipse激活+Aptana安装配置
  15. marven编译时:<pre>错误: 不允许使用自关闭元素</pre>
  16. Java内存模型是什么
  17. 服务器IIS配置添加下载扩展名
  18. 实时音视频 质量测试
  19. 如何在地图上显示多个红包商店 vue
  20. oracle audit_trail,关于Oracle审计(audit)

热门文章

  1. 用idea搭建SSM框架maven项目
  2. ios中UIView和CALayer关系
  3. 8-5如何使用线程池
  4. hdu-2112 HDU Today(最短路)
  5. FOUND MODULE 所在的表及刪除不啟作用的INCLUDE
  6. 对shell的简单认识
  7. 扩展卡尔曼滤波器设计
  8. Ubuntu18.04安装wireshark3.0.6(版本可自己选)
  9. Session和EL表达式实现登陆验证
  10. Linux下安装配置PHP环境(下)---PHP