美文网首页LeetCode题库-Swift解题
16. 最接近的三数之和(Swift版)

16. 最接近的三数之和(Swift版)

作者: Mage | 来源:发表于2018-12-26 16:35 被阅读4次

一、题目

给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。

例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.

与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).

二、解题

此题思路和15. 三数之和(Swift版)基本一致,同样是利用移动left和right,但题目是sum离target最近,所以需要判断下当abs(sum - target) <= abs(result! - target)时,sum才算离target最近,将sum赋值给result,遍历排序后的数组,即可找到最接近target的sum。
时间复杂度为O(nlog(n))

三、代码实现

    class Solution {
        func threeSumClosest(_ nums: [Int], _ target: Int) -> Int {
            var result: Int? = nil
            if nums.count < 3 {
                return 0
            }
            let arr = nums.sorted()
            
            for i in 0..<arr.count-2 {
                let first = arr[i]
                if i > 0 && arr[i] == arr[i-1] {
                    continue
                }
                var left = i + 1
                var right = arr.count - 1
                while left < right {
                    let sum = first + arr[left] + arr[right]
                    if result == nil || abs(sum - target) <= abs(result! - target) {
                        result = sum
                    }
                    if sum == target {
                        return result!
                    }else if sum < target {
                        left += 1
                    }else{
                        right -= 1
                    }
                }
            }
            return result ?? 0
        }
    }

Demo地址:github

相关文章

  • LeetCode-16 最接近的三数之和

    题目:16. 最接近的三数之和 难度:中等 分类:数组 解决方案:双指针 今天我们学习第16题最接近的三数之和,这...

  • 16. 最接近的三数之和(Swift版)

    一、题目 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使...

  • 力扣每日一题:16.最接近的三数之和 双指针解法

    16.最接近的三数之和 https://leetcode-cn.com/problems/3sum-closest...

  • 16.最接近的三数之和

    16.最接近的三数之和 题目链接:https://leetcode-cn.com/problems/3sum-cl...

  • 16. 三数之和最接近

    题目 给定一个整数数组 nums 和一个目标数 target,在 nums 中找出三个数,要求其和与 targe...

  • algrithrom

    求和问题,双指针解决 done 两数之和 三数之和 最接近三数之和 四数之和 链表反转问题 done 链表反转 链...

  • 16. 最接近的三数之和

    一、题目原型: 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整...

  • 16.最接近的三数之和

    题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们...

  • 16. 最接近的三数之和

    知乎ID: 码蹄疾码蹄疾,毕业于哈尔滨工业大学。小米广告第三代广告引擎的设计者、开发者;负责小米应用商店、日历、开...

  • 16. 最接近的三数之和

    16.最接近的三数之和 给定一个包括n个整数的数组nums和 一个目标值target。找出nums中的三个整数,使...

网友评论

    本文标题:16. 最接近的三数之和(Swift版)

    本文链接:https://www.haomeiwen.com/subject/egwkkqtx.html