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 };
  • 相关阅读:
    Python 在线基础课程
    单链表实现两个集合的交并补
    矩阵奇异值分解SVD
    动态规划0-1背包问题
    Java数字反转
    简单SqL语句
    HTML和CSS
    while和for循环
    C#读取和写入配置文件
    C# 添加系统计划任务方案
  • 原文地址:https://www.cnblogs.com/daocaorenblog/p/5231522.html
Copyright © 2011-2022 走看看