LeetCode 414 第三大的數

2021-08-20 14:40:26 字數 833 閱讀 8216

隨機一題

給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o(n)。

示例 1:

輸入: [3, 2, 1]

輸出: 1

解釋: 第三大的數是 1.

示例 2:

輸入: [1, 2]

輸出: 2

解釋: 第三大的數不存在, 所以返回最大的數 2 .

示例 3:

輸入: [2, 2, 3, 1]

輸出: 1

解釋: 注意,要求返回第三大的數,是指第三大且唯一出現的數。

存在兩個值為2的數,它們都排第二。

第一種方法參考大佬的,設定三個標誌,分別用來記錄第一第二第三大的數;這裡one,two,three要用long,不能用int,因為int最小值為-2147483648,如果陣列裡有-2147483648,會使最後乙個條件無法判斷:

public int thirdmax(int nums) else if(nums[i]>two&&nums[i]three&&nums[i]第二種方法,我用的排序+查重,沒有通過

public int thirdmax(int nums) else

map.put(nums[i],1);

}object a= map.keyset().toarray();

if(map.size()<3)

return (int)a[map.size()-1];

return (int)a[a.length-3];

}

LeetCode 414 第三大的數

給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 1 解釋 ...

LeetCode 414 第三大的數

給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2示例 3 輸入 2,2,3,1 輸出 1 解釋 注...

LeetCode 414 第三大的數

題目鏈結 題目描述 給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例1輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例2輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例3輸入 2,2,3,1 輸出 1...