| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> LeetCode 16最接近的三数之和 -> 正文阅读 |
|
[数据结构与算法]LeetCode 16最接近的三数之和 |
力扣? ?思路排序+双指针 枚举第一个数a,对剩下的两个元素b,c,希望它们的和最接近target-a 1.如果它们在原数组中枚举的范围没有任何规律可言,只能用两重循环来枚举所有情况 ? ? ? ?->考虑对数组升序排序 2.假设数组长度为n,先枚举a,在数组中的位置为i ? ?在[i+1,n)枚举b,c 3.用j,l分别表示指向b和c的指针,初始时,j指向位置i+1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?l指向位置n-1; 4.如果a+b+c>target,l--; ? ?如果a+b+c<=target,k++; 简单证明:不失一般性,只考虑a+b+c>target的情况: 如果l不变,k向右移,则a+b+c变大,远离target的值,不可能符合条件, l左移,a+b+c变小,可能靠近target,也可能远离target(小于target) 所以,l左移为当前的最优解。 代码
小技巧1.vector数组排序sort(num.begin(),num.end()); 2.对撞双指针
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:43:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |