題目

在陣列中找出第二大的數字。
Find second largest number in an array.

說明

找最大的方法我們都會,很簡單地用一個變數去保存目前最大,那找第二大不就可以很簡單的用兩個變數去保存?反之找最小的想法也是一樣,就不在此贅述;這個方法時間複雜度為 O(N)。

解法

使用 C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
static int Find(int[] array)
{
int max = int.MinValue;
int second = int.MinValue;
for (int i = 0; i < array.Length; ++i)
{
int n = array[i];
if (n > max)
{
second = max;
max = n;
}
else if (n > second)
second = n;
}
return second;
}

延伸閱讀

在陣列中找出第 K 大的數字
面試常見程式考題