zoukankan      html  css  js  c++  java
  • 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 };
  • 相关阅读:
    Node js 入门指南(1)
    书单
    JavaScript
    Web框架的本质
    Linux运维面试(填空题)
    Ubuntu更换国内源
    动态路由-OSPF
    CentOS7安装桌面环境
    anaconda系统安装&kickstart文件
    Tomcat之分布式session共享(MSM)
  • 原文地址:https://www.cnblogs.com/daocaorenblog/p/5231522.html
Copyright © 2011-2022 走看看