配列内のすべての数値は非負の整数であり、すべての数値が一意であると仮定します。
次のようにコードをコピーします。
パッケージ配列;
パブリック クラス SecondMaxElem {
public static int getSecondMaxElem(int[] array) {
if(array == null || array.length <= 1) {
-1 を返します。
}
int max = 配列[0] > 配列[1] ? 配列[0] : 配列[1];
int secMax = 配列[0] + 配列[1] - 最大;
int len = 配列の長さ;
for(int i = 2; i < len; i++) {
int cur = 配列[i];
if(cur > secMax) {
secMax = cur;
if(secMax > max) { // スワップ
int temp = secMax;
secMax = 最大値;
最大 = 温度;
}
}
}
secMax を返します。
}
public static int getSecondMaxElem2(int[] array) {
if(array == null || array.length <= 1) {
-1 を返します。
}
int max = 配列[0] > 配列[1] ? 配列[0] : 配列[1];
int secMax = 配列[0] + 配列[1] - 最大;
int len = 配列の長さ;
for(int i = 2; i < len; i++) {
int cur = 配列[i];
if(cur > max) {
secMax = 最大値;
最大 = カレント;
}
else if(cur > secMax && cur < max) {
secMax = cur;
}
それ以外 {
// それ以外の場合は、最大値と 2 番目の最大値はそのままで、座標軸を描画できます。
}
}
secMax を返します。
}
public static void main(String[] args) {
int[] 配列 = 新しい int[] { };
/*System.out.println("アルゴリズム 1: " + getSecondMaxElem(array));
System.out.println("アルゴリズム 2: " + getSecondMaxElem2(配列));
配列 = 新しい int[] { 2 };
System.out.println("アルゴリズム 1: " + getSecondMaxElem(array));
System.out.println("アルゴリズム 2: " + getSecondMaxElem2(配列));*/
配列 = 新しい int[] { 2, 3, 1, 6, 7, 5, 9 };
System.out.println("アルゴリズム 1: " + getSecondMaxElem(array));
System.out.println("アルゴリズム 2: " + getSecondMaxElem2(配列));
/*array = new int[] { 1, 2, 3, 3, 4, 5, 5 };
System.out.println("アルゴリズム 1: " + getSecondMaxElem(array));
System.out.println("アルゴリズム 2: " + getSecondMaxElem2(配列));*/
}
}