【每日一题】LeetCode - 最接近的三数之和

【每日一题】LeetCode - 最接近的三数之和

LeetCode 的「最接近的三数之和」问题要求我们从给定整数数组中找到三个数的和,使它最接近目标值。适合初学者的原因在于它结合了双指针、排序等基本技巧,为大家理解基本的算法和数据结构提供了一个很好的机会。

如果你不知道什么是双指针可以参考我之前发的博客,或者直接看我数据结构的博客专栏【数据结构】双指针算法:理论与实战

一、题目介绍

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。

返回这三个数的和。

假定每组输入只存在恰好一个解。

这道题与上一题很类似,如果你没看过上一题强烈建议务必去看一下【每日一题】LeetCode - 三数之和

示例 1

  • 输入nums = [-1,2,1,-4], target = 1
  • 输出2
  • 解释:与 target 最接近的和是 2,即 -1 + 2 + 1 = 2

示例 2

  • 输入nums = [0,0,0], target = 1
  • 输出0
  • 解释:与 target 最接近的和是 0,即 0 + 0 + 0 = 0

二、解题思路

  1. 排序:首先将数组排序,这有助于后续通过双指针更有效地缩小范围。
  2. 遍历 + 双指针:遍历每个元素作为三元组的第一个元素,然后利用双指针来找到另外两个数。
  3. 求最接近的和:通过计算当前和与目标的差距,不断更新最接近的和。

三、代码实现

以下是代码实现,带有详细注释:

classSolution{ public:intthreeSumClosest(vector<int>& nums,int target){ int ans =0x7fffffff, sum =0;sort(nums.begin

Read more

GCC 14编译选项配置实战(高性能C++构建秘籍)

第一章:GCC 14编译器的新特性与构建环境准备 GCC 14作为GNU编译器集合的最新稳定版本,引入了多项增强功能,显著提升了C++标准支持、诊断能力以及优化性能。开发者在使用前需确保构建环境满足最低依赖要求,并正确配置工具链。 核心新特性概览 * 全面支持C++23关键特性,包括std::expected和模板参数冗余推导 * 增强静态分析能力,新增对未定义行为的深度检测机制 * 优化跨函数边界内联策略,提升生成代码的执行效率 * 引入更精准的调试信息格式(DWARF-5),改善GDB调试体验 构建环境搭建步骤 在主流Linux发行版中安装GCC 14,推荐通过官方源或自定义编译方式获取: # 添加Ubuntu Toolchain PPA并安装 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install gcc-14 g++-14 # 设置默认编译器版本 sudo update-alternatives --install /usr/bin/

By Ne0inhk
【C++】B2108 图像模糊处理

【C++】B2108 图像模糊处理

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳]本文专栏: C++ 文章目录 * 💯前言 * 💯题目描述 * 题目内容 * 输入格式 * 输出格式 * 示例 * 输入: * 输出: * 💯题目分析 * 问题拆解 * 💯我的做法 * 代码实现 * 代码分析 * 💯老师的做法 * 代码实现 * 代码分析 * 💯两种实现的对比 * 💯相关概念拓展 * 1. 四舍五入的实现 * 2. 二维数组的边界处理 * 💯优化建议 * 💯小结 💯前言 在C++程序设计学习中,处理二维数组与图像问题是一个重要的实践内容,能够帮助我们熟悉矩阵操作、边界条件处理以及浮点运算等核心技能。本篇文章将以一个图像模糊处理的题目为切入点,详细剖析题目背景、解题思路与两种代码实现(我的做法与老师的代码),并对两者进行深入比较与优化。同时,还将补充相关概念的详细解析,以期让读者对问题有全面而深入的理解。 C++ 参考手册 💯题目描述 题目来源于一个二维矩阵的图像模糊处理问题,其具体要求如下

By Ne0inhk

基于MISRA C++的车载软件开发实战案例

车载C++为何必须“自我约束”?一个电机控制项目的MISRA实战手记 你有没有想过,为什么在性能越来越强的车载芯片上,工程师反而要主动放弃C++里那些炫酷的功能? 比如异常处理、动态内存分配、宏函数、多重继承……这些在普通软件开发中习以为常的特性,在车规级代码里却成了“禁区”。这不是技术倒退,而是一场为了 安全与确定性 的必要妥协。 最近我参与了一个新能源车永磁同步电机控制器(PMSM)的软件开发项目,运行平台是英飞凌AURIX TC3xx系列多核MCU,系统等级达到ASIL-D——功能安全的最高级别。在这个项目中,我们不仅要用C++写高效控制算法,还得让每一行代码都经得起第三方审计的拷问。 最终的答案很明确: MISRA C++:2008 。 这不是一套可有可无的编码风格指南,而是整个软件生命周期中的“法律条文”。它不教你如何实现FOC算法,但它确保你的算法不会因为一个未初始化变量或一次非法指针访问而导致整车失控。 下面,我就以这个真实项目为背景,带你走进MISRA C++的实战世界——不是照本宣科地念规则,而是告诉你: 为什么非得这么做?不这么做会出什么事?我们又是怎么

By Ne0inhk
【C/C++刷题集】string类(一)

【C/C++刷题集】string类(一)

🫧个人主页:小年糕是糕手 💫个人专栏:《C++》《Linux》《数据结构》《C语言》 🎨你不能左右天气,但你可以改变心情;你不能改变过去,但你可以决定未来! 目录 一、字符串最后一个单词的长度 二、验证回文串 三、字符串中的第一个唯一字符 四、反转字符串 一、字符串最后一个单词的长度 字符串最后一个单词的长度 这里我们看题目有一个注意点就是我们平常使用cin输入时遇到空格会停下来,在例子中我们可以看到他有A B C D,如果我们使用cin在遇到第一个A之后就会报错,所以这里我们要用到另一种输入方式:getline 他并不是一个成员函数,而是输入流的全局函数 getline(istream&, string&)(定义在 <string> 头文件中),作用是从输入流中读取一整行内容,存入 string 对象。 // 基础用法(读整行) getline(

By Ne0inhk