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即可,不需要再利用辅助函数求初始二叉树的非根节点的左子树深度与右子树深度。


相关推荐
j_xxx404_1 小时前
C++算法:哈希表(简介|两数之和|判断是否互为字符重排)
数据结构·c++·算法·leetcode·蓝桥杯·力扣·散列表
脱氧核糖核酸__1 小时前
LeetCode热题100——189.轮转数组(题解+答案+要点)
数据结构·c++·算法·leetcode
木井巳2 小时前
【递归算法】组合总和
java·算法·leetcode·决策树·深度优先·剪枝
coding者在努力2 小时前
被n整除的n位数
c++·算法
赵药师2 小时前
Win11下的VS2022 配置RGBD435i 相机
c++·vs2022·windows11·rgbd435i
量子炒饭大师3 小时前
【C++ 进阶】Cyber霓虹掩体下的代码拟态——【面向对象编程 之 多态】一文带你搞懂C++面向对象编程中的三要素之一————多态!
开发语言·c++·多态
伴我与影3 小时前
【记录】复现论文 Dftpav
c++·docker
Hical_W3 小时前
深入学习CPP17_PMR
c++·学习
计算机安禾4 小时前
【数据结构与算法】第42篇:并查集(Disjoint Set Union)
c语言·数据结构·c++·算法·链表·排序算法·深度优先
吃着火锅x唱着歌4 小时前
LeetCode 150.逆波兰表达式求值
linux·算法·leetcode