Stock Buy and Sell Java
- Get link
- X
- Other Apps
PROGRAM TO CALCULATE THE STOCK TO BUY/SELL TO MAXIMIZE THE PROFIT.
import
java.util.ArrayList;
// Solution structure
class
Interval {
int
buy, sell;
}
class
StockBuySell {
// This function finds the buy sell schedule for maximum profit
void
stockBuySell(
int
price[],
int
n)
{
// Prices must be given for at least two days
if
(n ==
1
)
return
;
int
count =
0
;
// solution array
ArrayList<Interval> sol =
new
ArrayList<Interval>();
// Traverse through given price array
int
i =
0
;
while
(i < n -
1
) {
// Find Local Minima. Note that the limit is (n-2) as we are
// comparing present element to the next element.
while
((i < n -
1
) && (price[i +
1
] <= price[i]))
i++;
// If we reached the end, break as no further solution possible
if
(i == n -
1
)
break
;
Interval e =
new
Interval();
e.buy = i++;
// Store the index of minima
// Find Local Maxima. Note that the limit is (n-1) as we are
// comparing to previous element
while
((i < n) && (price[i] >= price[i -
1
]))
i++;
// Store the index of maxima
e.sell = i -
1
;
sol.add(e);
// Increment number of buy/sell
count++;
}
// print solution
if
(count ==
0
)
System.out.println(
"There is no day when buying the stock "
+
"will make profit"
);
else
for
(
int
j =
0
; j < count; j++)
System.out.println(
"Buy on day: "
+ sol.get(j).buy
+
" "
+
"Sell on day : "
+ sol.get(j).sell);
return
;
}
public
static
void
main(String args[])
{
StockBuySell stock =
new
StockBuySell();
// stock prices on consecutive days
int
price[] = {
100
,
180
,
260
,
310
,
40
,
535
,
695
};
int
n = price.length;
// fucntion call
stock.stockBuySell(price, n);
}
}
OUTPUT
Buy on day : 0 Sell on day: 3 Buy on day : 4 Sell on day: 6
- Get link
- X
- Other Apps
Comments
Post a Comment