題目:給定乙個無序陣列,包含正數、負數和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...