zoukankan      html  css  js  c++  java
  • LeetCode(C++)刷题计划:16-最接近的三数之和

    16-最接近的三数之和

    @Author:CSU张扬
    @Email:csuzhangyang@gmail.com or csuzhangyang@qq.com

    Category Difficulty Pass rate Tags Companies
    algorithms Medium 41.91% array / two-pointers bloomberg

    1. 题目

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

    例如,给定数组 nums = [-121-4], 和 target = 1.
    
    与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
    

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/3sum-closest/

    2. 解法

    2.1 解法一:双指针法

    1. 与第15题三数之和类似。三数之和是当和为 target 是我们需要的值,此题则是sumtarget|sum - target|最小时,是我们需要的值。
    2. 其余部分和三数之和相同。参考链接:15 - 三数之和

    执行用时: 12 ms, 在所有 cpp 提交中击败了 72.29% 的用户
    内存消耗: 8.7 MB, 在所有 cpp 提交中击败了 87.01% 的用户

    class Solution {
    public:
        int threeSumClosest(vector<int>& nums, int target) {
            if (nums.size() < 3)
                return 0;
            sort(nums.begin(), nums.end());
            int sum;
            long res = INT_MAX;
            for (auto k = 0; k < nums.size() - 2; ++ k) {
                int l = k + 1;
                int r = nums.size() - 1;
                while (l < r) {
                    sum = nums[k] + nums[l] + nums[r];
                    if (abs(sum - target) < abs(res - target))
                            res = sum;
                    if (sum < target) {
                        while (l < r && nums[l] == nums[++ l]) { }
                    }
                    else if (sum > target) {
                        while (l < r && nums[r] == nums[-- r]) { }
                    }
                    else {
                        return target;
                    }
                }
            }
            return res;
        }
    };
    
  • 相关阅读:
    好久没锻炼
    liunx下安装第三方Python(PIP安装)
    Mysql和SqlServer互相转换
    sqlmap使用笔记
    查找域控的几个常用方法
    ssh的一些小操作
    使用theHarvester 进行邮箱和子域名的收集
    python实现大文件分割与合并
    python中MySQLdb模块用法实例
    2. Shell编程第二讲
  • 原文地址:https://www.cnblogs.com/MagicConch/p/12179154.html
Copyright © 2011-2022 走看看