• 3Sum Closest


    大致思路还和3Sum一样:先排序,然后固定第一个数,后面的范围用两个指针确定,当大于目标值时,右指针左移,当小于目标值时,左指针右移。

    需要注意的:第一每次改变三个数其中一个都要再次计算总和,判断。

     1 class Solution {
     2 public:
     3     int threeSumClosest(vector<int>& nums, int target) {
     4         int closet=0,j,k,sum=0;
     5         bool flag=false;
     6         sort(nums.begin(),nums.end());
     7         if(nums.size()<3)
     8         {
     9             int s=0;
    10             while(nums[s])
    11             closet+=nums[s++];
    12             return closet;
    13         }
    14         for(int i=0;i<nums.size()-2;i++)
    15         {
    16          j=i+1;
    17          k=nums.size()-1;
    18          if(!flag)
    19          {
    20              flag=true;
    21              closet=nums[i]+nums[j]+nums[k];
    22          }
    23          while(j<k)
    24          {
    25              sum=nums[i]+nums[j]+nums[k];
    26              if(abs(sum-target)<abs(closet-target))
    27              closet=sum;
    28              if(sum<target) j++;
    29              if(sum>target) k--;
    30              if(sum==target) return target;
    31              
    32          }
    33         }
    34         return closet;
    35     }
    36 };
  • 相关阅读:
    第 4 章 MySQL 安全管理
    第 3 章 MySQL 存储引擎简介
    第 2 章 MySQL 架构组成
    道教的【五行】学说
    【matlab】MTATLAB解线性方程组
    RPolar项目进度记录
    numpy和TensorFlow的函数
    卷积
    腾讯QQ空间超分辨率技术TSR
    混元桩
  • 原文地址:https://www.cnblogs.com/daocaorenblog/p/5231522.html
Copyright © 2020-2023  润新知