1.簡述:
描述
假設你有一個數組prices,長度為n,其中prices[i]是股票在第i天的價格,請根據這個價格數組,傳回買賣股票能獲得的最大收益
1.你可以買入一次股票和賣出一次股票,并非每天都可以買入或賣出一次,總共隻能買入和賣出一次,且買入必須在賣出的前面的某一天
2.如果不能擷取到任何利潤,請傳回0
3.假設買入賣出均無手續費
資料範圍:
輸入描述:
第一行輸入一個正整數 n 表示數組的長度
第二行輸入 n 個正整數,表示股票在第 i 天的價格
輸出描述:
輸出隻買賣一次的最高收益
示例1
輸入:
7
8 9 2 5 4 7 1
輸出:
5
說明:
在第3天(股票價格 = 2)的時候買入,在第6天(股票價格 = 7)的時候賣出,最大利潤 = 7-2 = 5 ,不能選擇在第2天買入,第3天賣出,這樣就虧損7了;同時,你也不能在買入前賣出股票。
示例2
輸入:
3
2 4 1
輸出:
2
示例3
輸入:
3
3 2 1
2
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String nStr = scan.nextLine(); // 輸入一個正整數 n
int n = Integer.valueOf(nStr); // 将 String 類型轉換為 int 類型
String numsStr = scan.nextLine(); // 輸入 n 個正整數
String[] numsStrList = numsStr.split(" ");
int[] nums = new
int[numsStrList.length]; // 定義一個整型變量,用于存放這 n 個正整數
for (int i = 0; i < nums.length; i++) {
nums[i] = Integer.valueOf(numsStrList[i]);
}
// 一些特殊情況的處理
if (1 == nums.length) {
System.out.println(0);
return;
}
int rs = nums[1] - nums[0];
int now = nums[1] - nums[0];
int pre = nums[1] - nums[0];
for (int i = 1; i < nums.length - 1; i++) {
if (pre <= 0) {
now = nums[i + 1] - nums[i];
} else {
now = pre + nums[i + 1] - nums[i];
}
pre = now;
rs = Math.max(rs, now);
}
System.out.println(rs > 0 ? rs : 0);
}
}