35:16. 最接近的三数之和

2023-10-31

题目

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        sort(nums.begin(), nums.end());
        int len = nums.size();
        int diff = target - nums[0]-nums[2]-nums[1];
        int threeSumClosest = nums[0]+nums[2]+nums[1];
        for(int i=0;i<len;i++){
            for(int j=i+1;j<len;j++){
                int k=len-1;
                while(j<k){
                    if(abs(target - nums[i]-nums[j]-nums[k]) < diff){
                        diff = abs(target - nums[i]-nums[j]-nums[k]);
                        threeSumClosest =  nums[i]+nums[j]+nums[k];
                    }
                    k--;
                }
            }
        }
        return threeSumClosest;
    }
};

1986ms

优化

在这里插入图片描述
最关键的,不是无脑的k–,j++,而是分类讨论,大于了,就减小,k–,小于了,就增大,k++

在这里插入代码片

思考,出现顺序很重要

先判断是否是最小的,而不是先变更j和k的值

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        sort(nums.begin(), nums.end());
        int len = nums.size();
        int diff = abs(target - nums[0]-nums[2]-nums[1]);
        int threeSumClosest = nums[0]+nums[2]+nums[1];
        for(int i=0;i<len;i++){
            int j=i+1;
            int k=len-1;
            while(j<k){
                 if(abs(target - nums[i]-nums[j]-nums[k]) < diff){
                    diff = abs(target - nums[i]-nums[j]-nums[k]);
                    threeSumClosest =  nums[i]+nums[j]+nums[k];
                }
                if(nums[i]+nums[j]+nums[k] == target){
                    return target;
                }
                else if(nums[i]+nums[j]+nums[k] > target){
                    k--;
                }
                else{
                    j++;
                }
            }
        }
        return threeSumClosest;
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

35:16. 最接近的三数之和 的相关文章

  • (若依)RuoYi后台管理框架前端

    若依后台管理 官方网址 后台管理二开推荐 官网的源码地址可供下载前后端代码 最近进到公司后跟着团队接了两家公司的App一套的开发 到公司的第一天就是先配置开发环境 安装软件之类的 第二天 带着熟悉RuoYi框架 很巧带我的大哥和我是一个学校

随机推荐

  • 关于一些奇葩的兼容bug

    iPhoneXr canvas层级失效 大致就是这样 一个img在canvas上面 所有手机img正常显示 就是ios的这个机型有问题 系统版本14 0 img的层级不论多大都会被canvas覆盖 解决办法尽然是将canvas的层级设置为
  • Ubuntu下FastDFS环境的安装搭建

    Ubuntu下FastDFS环境的安装搭建 一 FastDFS简介 FastDFS是一个个人开发的 轻量级的 开源的分布式文件系统 纯C语言编写 其功能包括 文件存储 文件同步 文件访问 文件上传 文件下载 等 解决了大容量存储和负载均衡的
  • Qt主线程卡死,竟然与X11 的 _XReply() 有关

    在ubuntu系统下运行Qt程序 Qt的程序就相当于X11的一个客户端 受X11的限制 近期 在处理一起离奇事件 发现UI的qt界面已经卡死了 无鼠标键盘任何反应 但程序是运行的 比如与其他设备通信是正常的 说明程序本身没有死掉 通过断点
  • 中移链Java-SDK实战使用

    id BSN 2021 公众号 BSN研习社 作者 中移信息 中移链是基于EOS区块链框架改造 满足BSN开放联盟链要求 符合国内监管政策 BSN开放联盟链 BSN Open Permissioned Blockchain 简称OPB 包括
  • ★教程1:matlab学习教程入门100例目录

    1 订阅本教程用户可以免费获得本博任意2个 包括所有免费专栏和付费专栏 博文对应代码 私信博主给出代码博文的链接和邮箱 2 本MATLAB课程的所有案例 部分理论知识点除外 均由博主编写而成 供有兴趣的朋友们自己订阅学习使用 未经本人允许
  • React性能优化的8种方式了解一下

    react凭借virtual DOM和diff算法拥有高效的性能 除此之外也有很多其他的方法和技巧可以进一步提升react性能 在本文中我将列举出可有效提升react性能的几种方法 帮助我们改进react代码 提升性能 但是我们不必一定要在
  • 记一次Mac挖矿病毒的处置

    title 记一次Mac挖矿病毒的处置 前言 网络安全圈一年一度的叉叉行动的前期准备过程中 在客户现场进行失陷主机监测和处置 通过态势感知发现某台终端主机有每五分钟向矿池 43 249 204 183 8888 发起一次连接请求的情况 态势
  • Python +selenium 实现自动校园网页登录 (Firefox)

    目的 通过分析页面 实现校园网自动输入账号密码 点击登录的操作 环境部署 win10 Firefox 87 64位 python 3 9 安装selenium pip install selenium 安装driver for firefo
  • 小红书评分8.7(从零开始学Python),入门新手必看

    前言 Python 是一种面向对象 解释型计算机程序设计语言 由 Guido van Rossum 于 1989 年底发明 第一个公开 发行版发行于 1991 年 Python 语法简洁而清晰 具有丰富和强大的类库 它常被昵称为胶水语言 能
  • window10基于WSL,通过ppa快速搭建LNMP环境,打造thinkphp6+swoole+docker开发环境(php8.0,对其他版本也适用)

    安装WSL2和UBUNTU 换源 两种方式都行 不过改之前都要记得备份 1 一行语句搞定 sudo sed i s archive ubuntu com mirrors ustc edu cn g etc apt sources list
  • PLSQL环境配置详细步骤

    下载PLSQL和instantclient 配置PLSQL 打开plsql 点击取消按钮 会进入主界面 点击配置 有的版本是选择Tools 首选项 第一个选项 选择Oracle client 安装的主目录D PLsql InstantCli
  • 软件测试与质量 第一章

    目录 一 什么是软件测试 1 1 测试目的 1 2 测试内容 手段和过程 1 2 1 手工动态测试涉及的工作 1 2 2 静态检查 1 2 3 自动化动态测试系统涉及的工作 1 2 4 软件测试的流程 1 3 小结 1 4 软件测试的分类
  • UE4 C++(20) UnrealPak打包和打补丁

    12 27 2020 文章目录 前言 打包 Package 资源类型 执行打包命令 HotPatcher插件 获取资源信息 GetAssetData 路径转换 ConvLongPackageNameToPackagePath 获取资源GUI
  • 最小生成树之普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法

    作者 STzen 链接 https www jianshu com p 683ffde4f3a3 来源 简书 最小生成树 列子引入 如图假设v0到v8表示9个村庄 现在需要在这9个村庄假设通信网络 村庄之间的数字代表村庄之间的直线距离 求用
  • 力扣刷题-47.全排列Ⅱ、深度优先搜索

    给定一个可包含重复数字的序列 返回所有不重复的全排列 深度优先搜索 DFS 深度优先搜索就是在每一步对每一种可能的选择一条道走到底 然后再回过头尝试另外一种选择 深度优先搜索的关键是要考虑 当前这一步 该如何做 至于 下一步 该怎么做和当前
  • 【Java】Java与C/C++的不同点总结

    Java是在C 的基础上发展而来 但是与C 还是有不同点的 总结如下 不同点 C 支持指针 而 Java 没有指针的概念 Java中起类似作用的是引用 C 支持多继承 而 Java 不支持多重继承 但允许一个类实现多个接口 Java 是完全
  • win10内网穿透实现远程桌面连接

    一 前情提要 在学校的时候曾经看到过同学在实验室用远程桌面控制宿舍自己的电脑 这样不仅能随时使用自己电脑上的文件 还省得把电脑带来带去又麻烦又重 当时也研究过 但没成功 这不新冠肺炎疫情导致开学时间一推再推 最近在家研究起了家庭NAS 无意
  • cesium入门系列(一)

    写在前面 近期开展cesium的入门学习 同时将学习的笔记记录下来 部分地方可能会很粗旷 后续会逐渐完善 一 登录cesium官网注册后获取token 很重要 二 html界面打开cesium的第一个界面 三维地球 cesium项目包准备
  • web前端开发程序员必须知道的HTML常⽤代码汇总

    html css代码 本设置 1 font size 字号 2 font style 字体格式 3 font weight 字体粗细 4 颜 属性color 本颜 注意使 页安全 超链接设置 text decoration 参数 参数取值范
  • 35:16. 最接近的三数之和

    题目 class Solution public int threeSumClosest vector