给定一个正整数数组,它的第 i 个元素是比特币第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一次),设计一个算法来计算你所能获取的最大利润。
注意你不能在买入比特币前卖出。
import java.util.Scanner; public class Main { /** * 运行时间:60ms * * 占用内存:10688k * */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String[] s = scanner.nextLine().split(" "); int[] record = new int[s.length]; for (int i = 0; i < s.length; i++) { record[i]=Integer.parseInt(s[i]); } int max=0; for (int i = 0; i < s.length-1; i++) { for (int j = i+1; j < s.length; j++) { max=Math.max(max,record[j]-record[i]); } } System.out.println(max); } }解法二
import java.util.Scanner; public class Main { /** * 运行时间:60ms * * 占用内存:10624k * */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int min = scanner.nextInt(); int profit=0; while (scanner.hasNext()){ int i = scanner.nextInt(); profit=Math.max(profit,i-min); min=Math.min(i,min); } System.out.println(profit); } }
#include <iostream> #include<set> #include<map> #include<vector> #include<algorithm> #include<math.h> //#include< using namespace std; int main() { int min_price = -1; int num,max_profit = 0; while (cin>>num) { if(min_price == -1) min_price = num; else { if(min_price > num) min_price = num; else { max_profit=max(num - min_price,max_profit); } } } cout<<max_profit<<endl; return 0; }
import java.util.Scanner; import java.util.ArrayList; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); ArrayList<Integer> coin=new ArrayList<>(); while(in.hasNextInt()){ coin.add(in.nextInt()); } Integer[] co=new Integer[coin.size()]; coin.toArray(co); int profit=0; for(int i=co.length-1;i>=0;i--) for(int j=0;j<i;j++){ profit=Math.max((co[i]-co[j]),profit); } System.out.println(profit); } }
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] strPrice = br.readLine().trim().split(" "); int[] price = new int[strPrice.length]; for(int i = 0; i < price.length; i++) price[i] = Integer.parseInt(strPrice[i]); int maxIncome = 0; for(int i = 0; i < price.length - 1; i++){ for(int j = i + 1; j < price.length; j++) maxIncome = Math.max(maxIncome, price[j] - price[i]); } System.out.println(maxIncome); } }
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Solution2_比特币最佳买卖时机 { public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String[] line1 = bf.readLine().split(" "); int minprice = Integer.MAX_VALUE, max_profit = 0; for (int i = 0; i < line1.length; i++) { int a = Integer.parseInt(line1[i]); if (minprice > a) { minprice = a; }else if (a - minprice > max_profit){ max_profit = a - minprice; } } System.out.println(max_profit); } }
import java.io.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String[] str = bf.readLine().split(" "); int[] arr = new int[str.length]; for(int i = 0;i < str.length;i++){ arr[i] = Integer.parseInt(str[i]); } int maxprofit = 0; for(int i = 0;i < arr.length;i++){ for(int j = i+1;j < arr.length;j++){ if(arr[i] >= arr[j]){ continue; }else{ if((arr[j] - arr[i]) > maxprofit){ maxprofit = arr[j] - arr[i]; } } } } System.out.println(maxprofit); } }暴力遍历它不香吗
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int buy = scanner.nextInt(), profit = 0; while (scanner.hasNext()) { // 输入新的价格 int price = scanner.nextInt(); // 每次输入新的价格时,更新最大利润 profit = Math.max(profit, price - buy); // 每次输入新的价格时,更新最低买入价 buy = Math.min(buy, price); } System.out.println(profit); } }
import java.util.Scanner; /* * O(n)的做法 * 对于第i个位置上的元素,我们只需要知道区间[0, i - 1]最小值,就可以得出第二个数的位置为i的最大差值有序偶,枚举i就可以得出答案;而区间[0, i - 1]最小值可以预处理出来。 */ public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int min = scanner.nextInt(), max = 0; int temp; while (scanner.hasNext()) { temp = scanner.nextInt(); max = Math.max(max, temp - min); min = Math.min(min, temp); } System.out.println(max); } }java版
import java.util.*; import java.lang.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String in = sc.nextLine(); String[] s = in.split(" "); int max = Integer.parseInt(s[0]); int min = Integer.parseInt(s[0]); int count = 0; for (int i = 1; i < s.length; i++) { int num = Integer.parseInt(s[i]); if (num < min) { min = num; continue; } if (num > max) { max = num; if (max - min > count) { count = max - min; } continue; } if (num - min > count) { max = num; count = num - min; } } sc.close(); System.out.println(count); } }
a=list(map(int, input().split())) max=0 for i in a: for j in a[a.index(i)+1:]: if max<j-i: max=j-i print(max)