求子陣列的連續最大積 面試精選

2021-06-19 00:24:25 字數 975 閱讀 2631

這幾天看到這個問題,然後在網上沒能找到完整的答案,作者kay_zhyu給出了不錯的思路,而且針對大部分測試時都能給出正確的答案,但是在正負小數比較多時,有些結果不對。

其實質時,忽略了小數相乘時結果越來越小這個結論,當兩個小數相乘時,乘積肯定沒有當前這個數大,因而我們需要保留當前這個數作為最大的乘積。當然還要感謝kay_zhyu提供的思路。

下面給出完整並且正確的**:

#include "stdafx.h"

#includeusing namespace std;

#define inf 1e5;

double getmaxproduct(double *arr, int nlen)

else

pos = max(pos,arr[i]);

nag = min(nag,arr[i]);

ans = max(ans, pos);

if(nag > 0)

nag = 1;

if(pos < 0)

pos = 1;

} return ans;

} double max(const double a, const double b)

double min(const double a, const double b)

int main()

; //double arr[n]=;

//double arr[n]=;//144

//double arr[n]=;

double n = getmaxproduct(arr,5);

cout《當然我們使用動態規劃的話,那就更容易了,每次維護最大值和最小值,將a[i]乘上去,再更新最大最小值即可。

double maxproduct(double* arr, double len)

return largest;

}

程式設計師面試題精選 03 求子陣列的最大和

程式設計師面試題精選 03 求子陣列的最大和 題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸...

筆試面試之求子陣列最大和

輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 方法一 分別求出所有連續陣列子集,這個比較難想,用遞迴做,然後分別求出各個子集和大小,記錄最大值即可。複雜度n方 bool findgreates...

求子陣列的最大和

題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 本題最初為2005年浙江大學計算機系的考研題的最後一道程式設計題,在2006年裡包括google在內的很多知名公司都把本題當作面試題。由於本...