Best Time to Buy and Sell Stock
Question
Analysis
Solution
// Diff + Maximum Subarray
public class Solution {
/**
* @param prices: Given an integer array
* @return: Maximum profit
*/
public int maxProfit(int[] prices) {
if (prices == null || prices.length == 0) {
return 0;
}
int[] diff = new int[prices.length];
diff[0] = 0;
for (int i = 1; i < prices.length; i++) {
diff[i] = prices[i] - prices[i - 1];
}
return maxSubArray(diff);
}
public int maxSubArray(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
int length = nums.length;
int max = Integer.MIN_VALUE;
int sum = 0;
for (int i = 0; i < length; i++) {
sum = sum + nums[i];
max = Math.max(sum, max);
sum = Math.max(sum, 0);
}
return max;
}
}Reference
Last updated