在陣列中找到第二大的數
你可以假定至少有兩個數字
您在真實的面試中是否遇到過這個題?
樣例 給出 [1, 3, 2, 4], 返回 3.
給出 [1, 2], 返回 1.
public
class
findtwo ;
system.out.println(secondmax(nums));
}/**
* 找出第二大的數
**@param nums
*@return
*/public
static
intsecondmax(int nums)
/*** 快速排序
**@param nums
*@param low
*@param high
*@return
*/public
static
int quicksort(int nums, int low, int high)
int mid = subsort(nums, low, high);
quicksort(nums, low, mid);
quicksort(nums, mid + 1, high);
return nums;
}/**
* 交換位置,返回分割點
**@param origin
*@param low
*@param high
*@return
*/public
static
intsubsort(int origin, int low, int high)
origin[low] = origin[high];
//從前往後
while (origin[low] <= splitnum && high > low)
origin[high] = origin[low];
}origin[high] = splitnum;
return high;
}}
怎麼找到陣列裡的第二大的數
如果僅僅是考慮實現功能,而不考慮時間效率,可以先通過排序演算法將陣列進行排序,然後根據陣列下標來索引訪問陣列中第二大的數,最快的排序演算法一般為快速排序演算法,但是其時間複雜度仍未o nlogn 根據下標訪問陣列需要遍歷一遍陣列,時間複雜度為o n 所以總的時間為o nlogn 有沒有更好的方法降低...
第二大的數
這是微軟的一道面試題,是我找工作時看的面試寶典裡面的一題,覺得很有意思,這種處理的方法應該可以用在很多地方。下面就來進入正題吧。題目 寫乙個函式,找出乙個整數陣列中,第二大的數。時間複雜度o n const int minnumber 32767 int ctestsizeofdlg find se...
找出陣列中第二大的數
給你乙個陣列,求出其中第二大的數 比如陣列a 1,2,3,4,5,6,7,8,9 其中第二大的數為8,返回8即可 分析 一般情況下都是求最大值,呵呵,這道題很有趣。想想也不難,可以在掃瞄最大值的同時,求出第二大的值,就是比當前最大值大的數賦給最大值,然後用第二大的值與先前的最大值比較,如果小,則用先...