2_20相鄰兩數(shù)最大差值

有一個(gè)整形數(shù)組A,請(qǐng)?jiān)O(shè)計(jì)一個(gè)復(fù)雜度為O(n)的算法,算出排序后相鄰兩數(shù)的最大差值。

給定一個(gè)int數(shù)組A和A的大小n,請(qǐng)返回最大的差值。保證數(shù)組元素多于1個(gè)。

測(cè)試樣例:
輸入:[1,2,5,4,6],5
返回:2

class Gap {
public:
    int maxGap(vector<int> A, int n) {
        // write code here
        int max = A[0], min = A[0];
        int max_idx = 0, min_idx = 0;
        for(int i=1; i<n; i++){
            if(A[i] > max){
                max = A[i];  max_idx = i;
            }else if (A[i] < min){
                min = A[i];  min_idx = i;
            }
        }
        float step = (max - min) / (float)n;
        vector< list<int> > bucket(n+1);
        bucket[0].push_back(A[min_idx]);
        bucket[n].push_back(A[max_idx]);
        
        // 遍歷數(shù)組,將元素放入桶內(nèi)
        for(int i=0; i<n; i++){
            if(i==min_idx || i==max_idx){
                continue;
            }else{
            bucket[floor((A[i] - min)/step)].push_back(A[i]);
            }
        }

        // 遍歷每個(gè)桶內(nèi)的list,找出該桶內(nèi)的最大值與與下一桶內(nèi)最小值
        int max_gap = 0;
        int l_max = 0;
        int r_min = 0, r_max = 0;
        for(int i=0; i<n+1; ++i){
            if(!bucket[i].empty()){
                r_max = bucket[i].front();
                r_min = bucket[i].front();
                list<int>::iterator j = bucket[i].begin(); 
                for(; j!=bucket[i].end(); ++j){
                    if(*j > r_max){
                        r_max = *j;
                    }else if(*j < r_min){
                        r_min = *j;
                    }
                }
                if(i>0){
                    max_gap = r_min - l_max > max_gap ? r_min - l_max : max_gap;
//                    if(r_min - l_max > max_gap){
//                        max_gap = r_min - l_max;
//                    }
                }
                l_max = r_max;
            }
        }
        return max_gap;
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容