16.最接近的三数之和

​​题目来源:

leetcode题目,网址:16. 最接近的三数之和 - 力扣(LeetCode)

解题思路:

对数组排序后,枚举第一个值,利用双指针在第一个值固定时的第二三个值。

解题代码:

复制代码
class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        int res=-1;
        int diff=-1;
        sort(nums.begin(),nums.end());
        for(int i=0;i<nums.size();i++){
            int targetSum=target-nums[i];
            int left=i+1;
            int right=nums.size()-1;
            while(left<right){
                if(res==-1 || abs(targetSum-nums[left]-nums[right])<diff){
                    res=nums[i]+nums[left]+nums[right];
                    diff=abs(targetSum-nums[left]-nums[right]);
                    if(diff==0){
                        break;
                    }
                }
                if(nums[left]+nums[right]>targetSum){
                    right--;
                }else{
                    left++;
                }
            }
        }
        return res;
    }
};
复制代码

总结:

刚开始打算将以每个节点为根节点,通过辅助函数获得其左子树长度与右子树长度之后,再判断是否为平衡二叉树。但后来发现,递归求初始二叉树的深度过程中会同时求每个节点的左子树深度与右子树的深度,在得出两个结果后判断其差的绝对值是否小于2即可,不需要再利用辅助函数求初始二叉树的非根节点的左子树深度与右子树深度。


相关推荐
敲上瘾14 小时前
Linux系统C++开发环境搭建工具(二)—— etcd 使用指南
linux·c++·etcd
深盾科技15 小时前
C/C++逆向分析实战:变量的奥秘与安全防护
c语言·c++·安全
ajassi200018 小时前
开源 C++ QT QML 开发(二十)多媒体--摄像头拍照
c++·qt·开源
_OP_CHEN18 小时前
C++基础:(十二)list类的基础使用
开发语言·数据结构·c++·stl·list类·list核心接口·list底层原理
晚风残21 小时前
【C++ Primer】第六章:函数
开发语言·c++·算法·c++ primer
满天星830357721 小时前
【C++】AVL树的模拟实现
开发语言·c++·算法·stl
Lris-KK1 天前
力扣Hot100--94.二叉树的中序遍历、144.二叉树的前序遍历、145.二叉树的后序遍历
python·算法·leetcode
Mr_WangAndy1 天前
C++设计模式_行为型模式_责任链模式Chain of Responsibility
c++·设计模式·责任链模式·行为型模式
时间之里1 天前
【c++】:Lambda 表达式介绍和使用
开发语言·c++
坚持编程的菜鸟1 天前
LeetCode每日一题——螺旋矩阵
c语言·算法·leetcode·矩阵