- 双循环暴力求解,居然没有ttl
- dp的思路,dp表示当前最大利润(有点牵强,dp[i]与dp[i-1]几乎没有关系):dp[i]=input[i]-Math.min(0-i),等于0时表示,买入当天即卖出。最后max=max(dp),本题直接用ints数组作为dp数组,不需要额外开辟空间了。
import java.util.*; public class Main { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); String[] s = scanner.nextLine().split(" "); int[] ints = Arrays.stream(s).mapToInt(Integer::parseInt).toArray(); int max = Integer.MIN_VALUE; // for(int i = 0; i < ints.length; i++){ // for(int j = i; j < ints.length; j++){ // max = Math.max(max, ints[j] - ints[i]); // } // } int min = Integer.MAX_VALUE; for(int i = 0; i < ints.length; i++){ min = Math.min(min, ints[i]); ints[i] -= min; } for(int i = 0; i < ints.length; i++){ max = Math.max(max, ints[i]); } System.out.println(max); } }
```