📖 Scenario: You are working as a financial assistant. You have a list of daily stock prices for a company. Your job is to help the user understand how to buy and sell stocks to maximize profit in different ways.
🎯 Goal: Build a Java program that calculates the maximum profit from stock prices using different buying and selling strategies.
📋 What You'll Learn
Create an array of stock prices for 7 days
Add a variable to store the maximum profit
Write code to find the maximum profit by buying once and selling once
Print the maximum profit
💡 Why This Matters
🌍 Real World
Stock trading apps use similar logic to advise users when to buy and sell stocks for profit.
💼 Career
Understanding these algorithms helps in roles like financial analyst, software developer for trading platforms, and data scientist.
Progress0 / 4 steps
1
Create the stock prices array
Create an integer array called prices with these exact values: 100, 180, 260, 310, 40, 535, 695
DSA Java
Hint
Use int[] prices = { ... }; to create the array.
2
Add a variable to store maximum profit
Create an integer variable called maxProfit and set it to 0
DSA Java
Hint
Use int maxProfit = 0; to create the variable.
3
Calculate max profit by buying once and selling once
Write a for loop with variable i from 1 to prices.length, and inside it, update maxProfit to the maximum of current maxProfit and prices[i] - prices[i-1] if positive. Use a variable minPrice initialized to prices[0] to track the lowest price so far.
DSA Java
Hint
Track the lowest price and update maxProfit when you find a better profit.
4
Print the maximum profit
Write System.out.println(maxProfit); to display the maximum profit
DSA Java
Hint
Use System.out.println(maxProfit); to show the result.
Practice
(1/5)
1. What is the main goal when solving the Buy and Sell Stocks problem?
easy
A. Minimize the number of transactions made
B. Find the day with the highest stock price
C. Maximize the profit by choosing the best days to buy and sell stocks
D. Calculate the average stock price over all days
Solution
Step 1: Understand the problem goal
The problem asks to maximize profit by buying low and selling high on different days.
Step 2: Identify the correct objective
Maximizing profit means choosing the best buy and sell days, not minimizing transactions or finding averages.
Final Answer:
Maximize the profit by choosing the best days to buy and sell stocks -> Option C
Quick Check:
Goal = Maximize profit [OK]
Hint: Focus on profit difference between buy and sell days [OK]
Common Mistakes:
Confusing profit maximization with minimizing transactions
Thinking the goal is to find highest price day only
Ignoring the buy day before sell day order
2. Which of the following Java code snippets correctly initializes an array of stock prices for 5 days?
easy
A. int[] prices = {7, 1, 5, 3, 6};
B. int prices = [7, 1, 5, 3, 6];
C. int[] prices = (7, 1, 5, 3, 6);
D. int prices[] = 7, 1, 5, 3, 6;
Solution
Step 1: Check Java array initialization syntax
Java arrays are initialized with curly braces {} and type declaration with [] after type.
Step 2: Validate each option
Parentheses () are invalid, square brackets [] for values are invalid, missing braces {} and improper assignment are invalid. int[] prices = {7, 1, 5, 3, 6}; uses correct syntax.
Hint: Use curly braces {} for array values in Java [OK]
Common Mistakes:
Using square brackets [] for values instead of curly braces
Missing type[] before variable name
Using parentheses () instead of braces
3. What is the output of the following Java code that finds max profit with one transaction?
int[] prices = {7, 1, 5, 3, 6, 4};
int minPrice = Integer.MAX_VALUE;
int maxProfit = 0;
for (int price : prices) {
if (price < minPrice) minPrice = price;
else if (price - minPrice > maxProfit) maxProfit = price - minPrice;
}
System.out.println(maxProfit);
medium
A. 5
B. 6
C. 4
D. 7
Solution
Step 1: Track minimum price and max profit during iteration
Prices: 7,1,5,3,6,4. minPrice updates to 7 then 1. maxProfit updates when price - minPrice is greater.
Step 2: Calculate max profit step-by-step
At price=5, profit=5-1=4; maxProfit=4. At price=6, profit=6-1=5; maxProfit=5. At price=4, profit=4-1=3; maxProfit stays 5.
Final Answer:
5 -> Option A
Quick Check:
Max profit = 6 - 1 = 5 [OK]
Hint: Track min price and update max profit on the fly [OK]
Common Mistakes:
Confusing max profit with max price
Not updating minPrice correctly
Calculating profit without checking minPrice
4. Identify the error in this Java code snippet that attempts to calculate max profit with multiple transactions:
int maxProfit = 0;
for (int i = 1; i < prices.length; i++) {
if (prices[i] > prices[i - 1])
maxProfit += prices[i] - prices[i - 1];
else
i++;
}
System.out.println(maxProfit);
medium
A. Loop should start from i = 0
B. Missing initialization of maxProfit
C. Using prices[i] instead of prices[i-1] in calculation
D. Incorrect increment of loop variable inside else block
Solution
Step 1: Analyze loop increment and conditions
The loop increments i each iteration, but inside else block it increments i again causing skipping elements.
Step 2: Identify why extra increment causes error
Extra i++ skips days, missing some profit opportunities and causing incorrect result.
Final Answer:
Incorrect increment of loop variable inside else block -> Option D
Quick Check:
Loop variable increment only once per iteration [OK]
Hint: Avoid changing loop variable inside loop body [OK]
Common Mistakes:
Incrementing loop variable twice causing skips
Starting loop from wrong index
Confusing price indices in calculation
5. Given an array of stock prices, how would you modify the algorithm to find the maximum profit with at most two transactions?
Choose the best approach.
hard
A. Buy on the lowest price day and sell on the highest price day only.
B. Use two passes: first pass calculates max profit up to each day, second pass calculates max profit from each day to end, then combine.
C. Use a single pass and sum all positive differences between consecutive days.
D. Sort the prices array and pick the two largest differences.
Solution
Step 1: Understand the two transaction constraint
At most two transactions means we can buy and sell twice, but transactions cannot overlap.
Step 2: Use two-pass approach for max profit calculation
First pass calculates max profit from day 0 to i, second pass calculates max profit from i to end. Combining these gives max profit with two transactions.
Final Answer:
Use two passes: first pass calculates max profit up to each day, second pass calculates max profit from each day to end, then combine. -> Option B
Quick Check:
Two-pass method = Use two passes: first pass calculates max profit up to each day, second pass calculates max profit from each day to end, then combine. [OK]
Hint: Split problem into two single-transaction profits [OK]
Common Mistakes:
Sorting prices loses day order information
Summing all positive differences allows unlimited transactions
Ignoring transaction count limit
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.