查詢陣列中第二個大的數 微軟面試題

2021-10-24 04:33:17 字數 1163 閱讀 4084

題目:給出乙個陣列,要求輸出陣列中第二個大的數

輸入:int a=;

輸出:34

題解思路:

方法一:遍歷

1.定義最大值max初始化為a[0],第二大值為sec,遍歷陣列,如果陣列元素比max大就更新,max=a[i],sec記錄上一次max的值;如果陣列元素不大於max,再將陣列元素和sec判斷,如果陣列元素a[i]大於sec,則更新sec,sec=a[i];

函式**:

#include

using

namespace std;

//尋找第二大的數 採用記錄兩個數的辦法

intsecondbig

(int data,

int n)

else}}

return sec;

}int

main()

; cout<<

secondbig

(a,8

)

}

方法二:原始遍歷

遍歷兩遍,第一遍遍歷的時候找到最大值,然後在第二遍的時候,在排除最大值的情況下找到最大值,這個第二遍遍歷的最大值就是第二大的值。

乙個比較簡單的想法是遍歷兩邊陣列,第一遍找出最大值。

函式**二:

#include

#include

#include

using

namespace std;

//尋找第二大的數 採用記錄兩個數的辦法

intsecondbig

(int data,

int n)

else

//遍歷所有數字

for(

int i=

2;i)else

if(data[i]

>second)second=data[i];}

return second;

}int

main()

; cout<<

secondbig

(a,7

)

}

方法三:堆排序,優先順序佇列adt

檔案系統中的第二個問題

在用大的buff讀取檔案的過程中,發現讀取無法正常結束,fileinfo的內容被破壞掉了.追查了半天,發現是filegetch函式中的一處小bug.在550行,handle findopenfilew fp drive,fp dirclus,fp name if handle這裡,如果該檔案沒有被 ...

java 取int型的第二個位元組的數

無意中看到某個題目,前提條件,乙個byte最多表示256位,因為其是由8個位表示 八個1 最多表示256位。乙個int由32位組成,所以是4個byte表示。題目要求是給定乙個int數字,問第二個byte是多少。剛開始不會寫。再後來複習nio時,突然想到這題。1.首先建立 bytebuffer,其內部...

關於正規表示式中replace的第二個引數

string.replace searchvalue,newvalue searchvalue 必須。規定子字串或要替換的模式的 regexp 物件。請注意,如果該值是乙個字串,則將它作為要檢索的直接量文字模式,而不是首先被轉換為 regexp 物件。newvalue 必需。乙個字串值。規定了替換文...