第二版の提供を受賞 - 顔の質問63(javaの)

インタビューの質問:利益の最大のシェア

トピック:

在庫が多くを取得する可能性があるいったん配列に格納された時系列順に株式の価格は、最大の貿易利益を何だと仮定しています

以下のような:いくつかの時間ノード} {9,11,8,5,7,12,16,14、16を買うために月に販売した場合、最大の利益は11を得るための株価

アイデア:

売買差の株式を、とだけ購入した後販売することができますから、株式取引の利益

入札とは、番号の2桁の価格を尋ねる場合は、利益の数は違いがあります

最大の利益は、すべての権利アレイの最大数との差であります

最初、溶液は激しいことができる - 一つずつ、O(N)の時間計算量を差分、すべての対数を見つけます

II。

販売価格が固定された販売価格、低価格より大きな利益が購入したとき、i番目の配列番号を取得することができるときに最大の利益を定義しました

配列は、i番目の桁にスキャンされた場合には、長い間私たちが覚えていることができて前にI-1桁の最小値は、現在の販売価格で最大の利益を計算することができますされている取得する可能性があります

コード:

public class Q63 {
	public static void main(String[] args) {
		int[] a = new int[] {9,11,8,5,7,12,16,14};
		int re = maxDiff(a);
		System.out.println(re);
	}
	
	public static int maxDiff(int[] a) {
		if(a.length<2) {
			System.out.println("wrong input");
			return 0;
		}
		
		int min = a[0];
		int max = a[1]-a[0];
		
		for(int i=1;i<a.length;i++) {
			// 记录差值最大值
			if(a[i]-min>max) {
				max = a[i]-min;
			}
			
			// 记录最小值
			if(a[i]<min) {
				min = a[i];
			}				
		}
		return max;
	}
}

 

おすすめ

転載: blog.csdn.net/qq_22527013/article/details/91400294