java求數(shù)組第二大元素示例
假設(shè)該數(shù)組所有數(shù)都為非負整數(shù),且所有數(shù)字都各自不同。
package array;
public class SecondMaxElem {
public static int getSecondMaxElem(int[] array) {
if(array == null || array.length <= 1) {
return -1;
}
int max = array[0] > array[1] ? array[0] : array[1];
int secMax = array[0] + array[1] - max;
int len = array.length;
for(int i = 2; i < len; i++) {
int cur = array[i];
if(cur > secMax) {
secMax = cur;
if(secMax > max) { // swap
int temp = secMax;
secMax = max;
max = temp;
}
}
}
return secMax;
}
public static int getSecondMaxElem2(int[] array) {
if(array == null || array.length <= 1) {
return -1;
}
int max = array[0] > array[1] ? array[0] : array[1];
int secMax = array[0] + array[1] - max;
int len = array.length;
for(int i = 2; i < len; i++) {
int cur = array[i];
if(cur > max) {
secMax = max;
max = cur;
}
else if(cur > secMax && cur < max) {
secMax = cur;
}
else {
// 其他情況最大值和第二大值不變,可以畫一個坐標軸
}
}
return secMax;
}
public static void main(String[] args) {
int[] array = new int[] { };
/* System.out.println("算法1: " + getSecondMaxElem(array));
System.out.println("算法2: " + getSecondMaxElem2(array));
array = new int[] { 2 };
System.out.println("算法1: " + getSecondMaxElem(array));
System.out.println("算法2: " + getSecondMaxElem2(array));*/
array = new int[] { 2, 3, 1, 6, 7, 5, 9 };
System.out.println("算法1: " + getSecondMaxElem(array));
System.out.println("算法2: " + getSecondMaxElem2(array));
/* array = new int[] { 1, 2, 3, 3, 4, 5, 5 };
System.out.println("算法1: " + getSecondMaxElem(array));
System.out.println("算法2: " + getSecondMaxElem2(array));*/
}
}
- Java中如何比較兩個數(shù)組中元素是否相同
- java中刪除數(shù)組中重復元素方法探討
- java 刪除數(shù)組元素與刪除重復數(shù)組元素的代碼
- java求數(shù)組元素重復次數(shù)和java字符串比較大小示例
- java檢查數(shù)組是否有重復元素的方法
- Java數(shù)組,去掉重復值、增加、刪除數(shù)組元素的實現(xiàn)方法
- Java數(shù)組中的元素刪除并實現(xiàn)向前移的代碼
- Java數(shù)組,去掉重復值、增加、刪除數(shù)組元素的方法
- java去除已排序數(shù)組中的重復元素
- Java中高效的判斷數(shù)組中某個元素是否存在詳解
相關(guān)文章
如何開啟控制臺輸出mybatis執(zhí)行的sql日志問題
這篇文章主要介紹了如何開啟控制臺輸出mybatis執(zhí)行的sql日志問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09Jmeter基于JDBC請求實現(xiàn)MySQL數(shù)據(jù)庫測試
這篇文章主要介紹了Jmeter基于JDBC請求實現(xiàn)MySQL數(shù)據(jù)庫測試,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10java中URLencode、URLdecode及Base64加解密轉(zhuǎn)換
本文主要介紹了java中URLencode、URLdecode及Base64加解密轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-01-01Java 多線程Synchronized和Lock的區(qū)別
這篇文章主要介紹了Java 多線程Synchronized和Lock的區(qū)別,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-01-01java使用google身份驗證器實現(xiàn)動態(tài)口令驗證的示例
本篇文章主要介紹了java使用google身份驗證器實現(xiàn)動態(tài)口令驗證的示例,具有一定的參考價值,有興趣的可以了解一下2017-08-08