zoukankan      html  css  js  c++  java
  • LeeCode: 3Sum Closest

    跟3sum题差不多,可以refer那题

    C++:

     1 class Solution {
     2  public:
     3      int threeSumClosest(vector<int> &num, int target) {
     4          // Start typing your C/C++ solution below
     5          // DO NOT write int main() function
     6          int maxgap = INT_MAX;
     7          int maxclose;
     8          sort(num.begin(), num.end());
     9          for (int i = 0; i < num.size()-2; i++) {
    10              int beg = i+1;
    11              int end = num.size()-1;
    12              while (beg < end) {
    13                  int sum = num[i] + num[beg] + num[end];
    14                  if (sum == target) return target;
    15                  if (abs(sum - target) < maxgap) {
    16                      maxgap = abs(sum - target);
    17                      maxclose = sum;
    18                  }
    19                  if (sum < target) beg++;
    20                  else end--;
    21              }
    22          }
    23          return maxclose;
    24      }
    25  };

    java:

     1 public class Solution {
     2     public int threeSumClosest(int[] nums, int target) {
     3         Arrays.sort(nums);
     4         int minDis = Integer.MAX_VALUE;
     5         int ans = nums[0];
     6         for (int i = 0; i < nums.length; i++)
     7         {
     8             if (i > 0 && nums[i] == nums[i-1]) continue;
     9             int left = i + 1;
    10             int right = nums.length - 1;
    11             while (left < right)
    12             {
    13                 if (left > i + 1 && nums[left] == nums[left-1])
    14                 {
    15                     left++;
    16                     continue;
    17                 }
    18                 int sum = nums[i] + nums[left] + nums[right];
    19                 if (Math.abs(target-sum) < minDis) {
    20                     ans = sum;
    21                     minDis = Math.abs(target - sum);
    22                 }
    23                 if (sum == target) break;
    24                 else if (sum > target) right--;
    25                 else left++;
    26             }
    27         }
    28         return ans;
    29     }
    30 }
    View Code
  • 相关阅读:
    Java基本数据类型
    Java入门
    JavaSE概述
    ORACLE中的自治事务
    JDWP Transport dt socket failed to initialize
    jinfo命令 Java Configuration Info
    mysql的bind-address设置为127 0 0 1,通过localhost连接访问不了
    与MQ通讯的完整JAVA程序
    Hadoop入门进阶步步高(三)-配置Hadoop
    GC Root
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/2959662.html
Copyright © 2011-2022 走看看