C++如何实现最近三数之和


本文小编为大家详细介绍“C++如何实现最近三数之和”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++如何实现最近三数之和”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Given an arraynumsofnintegers and an integertarget, find three integers innumssuch that the sum is closest totarget. Return the sum of the three integers. You may assume that each input would have exactly one solution.Example:Given array nums = [-1, 2, 1, -4], and target = 1.

The sum that is closest to the 香港云主机target is 2. (-1 + 2 + 1 = 2).这道题让我们求最接近给定值的三数之和,是在之前那道3Sum的基础上又增加了些许难度,那么这道题让返回这个最接近于给定值的值,即要保证当前三数和跟给定值之间的差的绝对值最小,所以需要定义一个变量 diff 用来记录差的绝对值,然后还是要先将数组排个序,然后开始遍历数组,思路跟那道三数之和很相似,都是先确定一个数,然后用两个指针 left 和 right 来滑动寻找另外两个数,每确定两个数,求出此三数之和,然后算和给定值的差的绝对值存在 newDiff 中,然后和 diff 比较并更新 diff 和结果 closest 即可,代码如下:解法一:我们还可以稍稍进行一下优化,每次判断一下,当 nums[i]*3 > target 的时候,就可以直接比较 closest 和 nums[i] + nums[i+1] + nums[i+2] 的值,返回较小的那个,因为数组已经排过序了,后面的数字只会越来越大,就不必再往后比较了,参见代码如下:解法二:读到这里,这篇“C++如何实现最近三数之和”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注开发云行业资讯频道。

相关推荐: 笔记本电脑和台式机有哪些区别

这篇文章主要介绍“笔记本电脑和台式机有哪些区别”,在日常操作中,相信很多人在笔记本 香港云主机电脑和台式机有哪些区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”笔记本电脑和台式机有哪些区别”的疑惑有所帮助!接下来,请跟着小编一…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/14 15:43
下一篇 07/14 15:46

相关推荐