牛客網 2018校招真題 最大乘積

2021-09-24 15:29:32 字數 841 閱讀 5355

題目:給定乙個無序陣列,包含正數、負數和0,要求從中找出3個數的乘積,使得乘積最大,要求時間複雜度:o(n),空間複雜度:o(1)

解法一:

思路:不論給定的陣列是什麼,最大的乘積只有兩種情況 1.三個最大的數的乘積(都是正數或者都是負數);2。三個最小的數的乘積(都是負數);

選出給定陣列中的最大的三個數和最小的兩個數即可。

時間複雜度為o(5n).

#include#includeusing namespace std;

int main()

maxnum[i]=array[i];

}for(int i=0;i<2;++i)

else if (a[2] > max2)

else

min1 = max3, min2 = max2;

for (int i = 3; i < n; ++i)

else if (a[i] < min2)

min2 = a[i];

if (a[i]>max1)

else if (a[i] > max2)

else if (a[i]>max3)

max3 = a[i];

} product = max1*max2*max3 > max1*min1*min2 ? max1*max2*max3 : max1*min1*min2;

return product;

}int main()

printf("%lld\n", maxproduct(a, n));

return 0;

}

牛客網拼多多校招最大乘積

給定乙個無序陣列,包含正數 負數和0,要求從中找出3個數的乘積,使得乘積最大,要求時間複雜度 o n 空間複雜度 o 1 輸入描述 輸入共2行,第一行包括乙個整數n,表示陣列長度 第二行為n個以空格隔開的整數,分別為a1,a2,an 輸出描述 滿足條件的最大乘積 示例1輸入 43 4 1 2 輸出2...

牛客網 2018校招真題 安置路燈

題目 題目描述 小q正在給一條長度為n的道路設計路燈安置方案。為了讓問題更簡單,小q把道路視為n個方格,需要照亮的地方用 表示,不需要照亮的障礙物格仔用 x 表示。小q現在要在道路上設定一些路燈,對於安置在pos位置的路燈,這盞路燈可以照亮pos 1,pos,pos 1這三個位置。小q希望能安置盡量...

牛客網 最大乘積

給定乙個無序陣列,包含正數 負數和0,要求從中找出3個數的乘積,使得乘積最大,要求時間複雜度 o n 空間複雜度 o 1 無序整數陣列a n 滿足條件的最大乘積示例1 複製3 4 1 2複製 24 main.cpp 最大乘積 created by 藍貓 on 2019 3 27.include in...