【LeetCode】908. Smallest Range I

October 11, 2018 LeetCode 学习笔记

第一次先為vector排序

class Solution {
public:
    int smallestRangeI(vector<int>& A, int K) {
        sort(A.begin(),A.end());
        return A[0]+K>A[A.size()-1]-K?0:A[A.size()-1]-A[0]-2*K;
    }
};

执行时间:20ms

------------------------------------------

第二次直接找出最大最小值

class Solution {
public:
    int smallestRangeI(vector<int>& A, int K) {
        int min=A[0];
        int max=A[0];
        for(int i=1;i<A.size();i++)
        {
            if(min>A[i])
            {
                min=A[i];
            }
            if(max<A[i])
            {
                max=A[i];
            }
        }
        return min+K>max-K?0:max-min-2*K;
    }
};

执行时间:32ms

------------------------------------------

第三次使用auto

class Solution {
public:
    int smallestRangeI(vector<int>& A, int K) {
        int min=A[0];
        int max=A[0];
        for(auto &i:A)
        {
            if(min>i)
            {
                min=i;
            }
            if(max<i)
            {
                max=i;
            }
        }
        return min+K>max-K?0:max-min-2*K;
    }
};

执行时间:16ms


由此可以对比出各个方式的执行效率问题。

添加新评论