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


相关推荐
xiaolongmeiya11 分钟前
P7082 [NWRRC 2013] Dwarf Tower 完全背包
c++
2401_8762213420 分钟前
因数个数、因数和、因数积
c++·算法
十五年专注C++开发22 分钟前
VS2019编译的C++程序,在win10正常运行,在win7上Debug正常运行,Release运行报错0xC0000005,进不了main函数
开发语言·c++·报错c0x0000005
云里雾里!30 分钟前
LeetCode 744. 寻找比目标字母大的最小字母 | 从低效到最优的二分解法优化
算法·leetcode
fy zs30 分钟前
网络编程套接字
linux·服务器·网络·c++
fpcc32 分钟前
模板编程—模板和元编程中的错误输出
c++·模板编程
xie_pin_an34 分钟前
C++ 类和对象全解析:从基础语法到高级特性
java·jvm·c++
小温冲冲38 分钟前
C++与QML信号绑定完全指南:实现跨语言无缝通信
c++
GIS 数据栈43 分钟前
【Seggis遥感系统升级】用C++高性能服务Drogon重构软件服务架构|QPS提升300%,性能再升级!
java·开发语言·c++·重构·架构
Tisfy1 小时前
LeetCode 0865.具有所有最深节点的最小子树:深度优先搜索(一次DFS + Python5行)
算法·leetcode·深度优先·dfs·题解