题目: 股票价格每天都在变化,以数组的索引表示交易日,以数组的元素表示每天的股票价格 * 可以通过买入和卖出获得利润。一天只能进行一次买入或卖出操作,一次买入加卖出操作称为一次交易次数。 * 你只能交易一次,求使得利润最大的交易策略 * * 思路:如果想在x天卖出 那肯定要在[1,x-1]中价格最低的一天买入 * 那我们如何知道价格最低的一天 ? :遍历到x天 在[1,x-1]天都遍历过了 遍历的时候就维护一下最小值 * 枚举在哪一天卖出,减去最小值 * */ public class A { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } // 记录每次循环维护的最小值 int min = (int) 1e4; // 记录答案 最终的答案可以是负数 int ans = (int) -1e4; // 枚举每一天都卖 for (int i = 0; i < n; i++) { // 第一天不能卖 从第二天开始卖 if (i > 0) ans = Math.max(ans, arr[i] - min); min = Math.min(min, arr[i]); } System.out.println(ans); } }
蓝桥杯 java 最大化交易利润
于 2024-01-01 16:03:38 首次发布