1. 程式人生 > 其它 >【LeetCode 力扣 414】第三大的數 ,給你一個非空陣列,返回此陣列中 第三大的數 。如果不存在,則返回陣列中最大的數。

【LeetCode 力扣 414】第三大的數 ,給你一個非空陣列,返回此陣列中 第三大的數 。如果不存在,則返回陣列中最大的數。

技術標籤: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