如題目,找出輸入的最大與次大數值相乘為正確輸出。承接Day 9卡住的題目。
今天浪費生命在youtube上看廢片兩個小時逃避責任後,我拖著痛苦不想面對coursera題目的身子,開始編程。
由於昨天碰到overflow問題,我再次複習了long long資料類型,滿腦子充斥著long long manyoutube洗腦廣告旋律。非業配就為了不能只有我看到而已,我要將觀閱文章的人們一起拖入long long man的洗腦旋律無法逃離魔爪
這是long long man鏈結:https://youtu.be/6-1Ue0FFrHY 給youtube廢片癌末期者,願者上鉤
原本我想要帶著滿滿的惡意與罪惡感在google上查詢解答,但是最後我決定從零開始打程式,遇到問題或是遺忘的指令才查google。
要抓出第一大數值,且下一次去除它,一般vector是行不通的,如果要刪掉最大值,想必要用迴圈去尋找index值,感覺浪費心力又不會通過time limit.....。
直接查到勸退文,提到map是自行定義排序的,用map查最大數值無疑是在浪費時間。讓原本想用輸入值為key,map值為i的我放棄這一條路。
只有我的腦袋與手指不協調不熟悉而已,透漏我犯的錯誤讓客官們見笑一下。阿不是,我怎麼寫這句話時怎麼那麼順?
cin>>n<<endl; /*cin與endl都將矛頭指向了n*/
#include<iostream>
//#include<vector>哎呀曝露了我的心思
using namespace std;
int main(){
// cout<<"Hi"<<endl;
int n;
long long judge = 0;
long long secondjudge = 0;
long long number, life_lemon;//當命運給你檸檬時,你只能做檸檬料理
cin>>n;
// std::vector<int> numbers(n);
for(int i=0;i<n;i++){
std::cin>>number;
if(number>judge){
life_lemon = judge;
judge = number;
if(life_lemon>secondjudge){
secondjudge = life_lemon;
}
}
else if(judge>secondjudge && number>secondjudge){
secondjudge = number;
}
/* std::cout<<"Big number is "<<judge<<" and the second big number is "<<secondjudge<< " life_lemon is "<<life_lemon<<endl;*/
}
std::cout/*<<" We find the max product is "*/<<judge*secondjudge<<endl;
}
裡面有很多long long資料型態,這是要避免結果overflow。
我設定第一大數值的變數名稱是judge
第二就是secondjudge
也許會有人問 life_lemon是甚麼鬼?
阿不然你在沒有life_lemon變數的情況下輸入n=5; input: 6 98 89 0 1000
看結果就知道了呀!
就是事情總有意外嘛!When life gives you lemons, make lemonade.
這是為了彌補else if的小問題才加上去的。
最後附上通過的小圖,失敗的就不附上了~