Хувьцаа аваад зараад яаж хамгийн их ашиг олох вэ ?
Бид энэхүү блогоор 🌳🌳 амазоны 🌳🌳 ярилцлаганд ирдэг бодлогыг бодох болно
Асуудал:
Өдрүүдийн хувьцааны ханшийг хадгалсан array
байя . Та хувьцаа аваад дараагийн өдрүүдэд зарна. Нэг өдөрт нэг л хувьцаа авах юмуу зарах боломжтой . Та хэдэн ч удаа
худалдаад зарах боломжтой бол хамгийн ихдээ ямар ашиг хийх вэ ?
Жишээ:
Шийдэл:
Гол санаа: Дараалсан өсөлттэй хэсгүүдийн хамгийн бага болон хамгийн их тооны зөрөөний нийлбэрүүд нийт хийх боломжтой ашиг болно. arr[]=[100, 180, 260, 310, 40, 535, 695] үед 100 - 310 , 40 - 695 хүртэл дараалан өсж байна . arr[]=[4, 2, 2, 2, 4] үед 2 - 4 хүртэл дараалан өсж байна .
Бид min хэмээх хувьсагчид дараалсан хэсэг болгоны бага утгыг хадгалан явна . Хэрвээ min ээс бага утга гарж ирвэл манай өсөх дараалал байхгүй тул энэ өсөх дараалал хүртэлх боломжтой ашиг(maxProfit) ийг profit дээр нэмэн min ийн утгыг өөрчилнө .
Хэрвээ min ээс их утга байвал энэхүү элемент өмнөх элементээс буурсан эсвэл өссөн байх магадлалтай . Тиймээс бид үүнийг else дотор тодорхойлж байна .
class Solution {
int stockBuySell(int arr[]) {
// code here
int profit =0;
int min=arr[0];
int maxProfit=0;
int length=arr.length;
for(int i=1;i<length;i++){
if(arr[i]<min){
min=arr[i];
profit+=maxProfit;
maxProfit=0;
}
else {
if(arr[i]<arr[i-1]){
min=arr[i];
profit+=maxProfit;
maxProfit=0;
}
else {
maxProfit=Math.max(maxProfit,arr[i]-min);
}
}
}
return profit+maxProfit;
}
}
Төстэй блогууд