【LeetCode 力扣 414】第三大的數 ,給你一個非空陣列,返回此陣列中 第三大的數 。如果不存在,則返回陣列中最大的數。
阿新 • • 發佈:2021-01-26
技術標籤:LeetCode力扣Java題目練習leetcodejava資料結構動態規劃演算法
學習目標:
目標:熟練運用 Java所學知識
題目內容:
本文內容: 使用Java實現:第三大的數
文章目錄
題目描述
給你一個非空陣列,返回此陣列中 第三大的數 。如果不存在,則返回陣列中最大的數。
示例 1:
輸入:[3, 2, 1]
輸出:1
解釋:第三大的數是 1
示例 2:
輸入:[1, 2]
輸出:2
解釋:第三大的數不存在, 所以返回最大的數 2 。
示例 3:
輸入:[2, 2, 3, 1]
輸出:1解釋:注意,要求返回第三大的數,是指第三大且唯一出現的數。 存在兩個值為2的數,它們都排第二。
解題思路
首先定義三個變數first,second,third,分別表示第一大的數、第二大的數、第三大的數,
然後遍歷陣列元素,分為一下幾種情況
- 如果元素大於first,進行以下賦值
third = second;
second = first;
first = i;
- 如果元素大於second,進行以下賦值
third = second;
second = i;
- 如果元素大於third,進行以下賦值
third = i;
- 如果元素等於first,或者等於second,或者小於等於third,則進行下次迴圈
實現程式碼
public class Practice_02 {
public static void main(String[] args) {
int[] nums = {1,2,3,4,5};
System.out.println(thirdMax(nums));
}
public static int thirdMax(int[] nums) {
long first = Long.MIN_VALUE;
long second = Long.MIN_VALUE;
long third = Long.MIN_VALUE;
for (int i : nums) {
if (third >= i || second == i || first == i) {
continue;
} else if (i > first) {
third = second;
second = first;
first = i;
} else if (i > second) {
third = second;
second = i;
} else {
third = i;
}
}
return third == Long.MIN_VALUE ? (int) first : (int) third;
}
}
執行結果
3