zoukankan      html  css  js  c++  java
  • 16.3Sum Closet

    思路:
    • 暴力,复杂度为 (O(n^3)),超时
    class Solution {
    public:
        int threeSumClosest(vector<int>& nums, int target) {
            int res = 10000;
            int tmp = 0;
            int len = nums.size();
            for(int i = 0; i < len; i++){
                for(int j = i+1; j < len; j++){
                    for(int k = j+1; k < len; k++){
                        if(res > abs(target - nums[i] - nums[j] - nums[k])){
                            res = abs(target-nums[i] - nums[j] - nums[k]);
                            tmp = nums[i] + nums[j] + nums[k];
                        }
                    }
                }
            }   
            return tmp;
        }
        
    };
    
    • 类似3Sum。这几道题相对暴力能够减小复杂度的主要原因是暴力里面的两层循环都执行了,而后面的这种解法通过比较使内部的两层循环减少到了一层,所以时间复杂度由 (O(n^3)) 减小到了 (O(n^2))
    class Solution {
    public:
        int threeSumClosest(vector<int>& nums, int target) {
            int res = 100000;
            int tmp = 0;
            sort(nums.begin(), nums.end());
            int len = nums.size();
            for(int i = 0; i < len-2; i++){
                int lo = i+1,hi = len-1;
    
                while(lo < hi){
                    if(abs(nums[i] + nums[lo] + nums[hi] - target) < res){
                        res = abs(nums[i] + nums[lo] + nums[hi] - target);
                        tmp = nums[i] + nums[lo] + nums[hi];
                    }
                    if(nums[i] + nums[lo] + nums[hi] == target) return target;
                    else if (nums[i] + nums[lo] + nums[hi] > target){
                        hi--;
                    }
                    else lo++;
                }
            }
            return tmp;
        }
    };
    
  • 相关阅读:
    在python中处理XML
    正则表达式
    python 反射
    python模块概况,json/pickle,time/datetime,logging
    python装饰器
    python3内置函数详解
    python函数,lambda表达式,三目运算,列表解析,递归
    python数据类型及其常用方法
    python3的文件操作
    初识Docker
  • 原文地址:https://www.cnblogs.com/UniMilky/p/6953563.html
Copyright © 2011-2022 走看看