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
  • 相关阅读:
    Git 安装使用及基础命令
    Ubuntu Anaconda3 环境下安装caffe
    Anaconda 安装及Python 多版本间切换
    基于 ZooKeeper 的分布式锁实现
    java 判断点是否在一条线段上
    python 安装opencv及问题解决
    python Opencv图像基础操作
    sctf pwn200
    BCTF warmup 50
    linux shadow破解
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/2959662.html
Copyright © 2011-2022 走看看