面試題的那些事(1)

2021-07-12 04:30:39 字數 1197 閱讀 8047

測試樣例:

[1,2,3,2,2]  5

返回:2

解題思路:

採用陣地攻守的思想: 第乙個數字作為第乙個士兵,守陣地;count = 1; 遇到相同元素,count++; 遇到不相同元素,即為敵人,同歸於盡,count--;當遇到count為0的情況,又以新的i值作為守陣地的士兵,繼續下去,到最後還留在陣地上的士兵,有可能是主元素,也有可能是最後乙個元素。再加一次迴圈,記錄這個士兵的個數看是否大於陣列一般即可。

int morethanhalfnum_solution(int* gifts, int size)

//引數錯誤

int count = 1;//計數器記錄士兵的生命值

int soldier = gifts[0];//士兵初始化為第乙個數字

for (int i = 1; i < size; i++)

else//遇到不相同的元素士兵生命值減少

if (count == 0)//士兵的生命值為0時將下乙個元素重新賦給士兵

}count = 0;

for (int j = 0; j < size; j++) }

if (count > size / 2)

return 0;//沒有出現一半

}

2、有36輛自動賽車和6條跑道,沒有計時器的前提下,最少用幾次比賽可以篩選出最快的三輛賽車?

解題思路:

1)首先將36輛車分為6組進行一次比賽,這是必不可少的,假設六組的**分別為a,b,c,d,e,f。通過6次比賽可以分別的找到每組的第一名a1,b1,c1,d1,e1,f1。

2)接下來就可以再進行第7場比賽,讓各小組的第一名a1,b1,c1,d1,e1,f1進行比賽,淘汰掉後三名假設為d1,e1,f1,進而可以將d,e,f三組整個淘汰。並且得到6組的第一名,假設為a1,同時也為36輛車的第一名。

3)進行最後一場比賽,因為第一名已經決出為a1,同時只剩下b1,c1,a2,b2,c2,a3,b3,c3,從其中找到第2名和第3名,通過分析可以得到,如果在已知的比賽結果中如果存在2輛車跑的比他快,則可以直接淘汰,因為就算成績最好的結果下他也為第4名。

由於:b1>b2>b3

c1>c2>c3

b1>c1>c2

所以b3,c3,c2可以直接淘汰,最後剩下的待確定的賽車為b1,c1,b2,a2,a3

綜上所述,最少8次比賽則可以篩選出最快的三輛賽車。

面試的那些事 1

前幾日面試一家公司問到海量資料的問題.自己當時可能沒有理解出什麼意思,回答得不盡如意 上網查了查資料,發覺網上的答案眾多,有點籠統.現總結一下.1.建立相關聚合索引 查詢欄位用得較多 2.在資料庫上面x表的某時間欄位上進行分檔案,分割槽,優化資料庫結構 3.至少也得具備常識性的資料庫知道,如char...

回文串的那些面試題

回文串,這是乙個面試中經常見到會考到的乙個面試題,什麼叫回文串呢,通俗直白的意思就是乙個字串倒序與正序是完全一樣的,這就叫回文串。1 輸入乙個字串,判斷這個字串是不是回檔案字串?解 每乙個學習程式語言的人,拿的第一本教程裡面應該都會有這個題目 看看程式 吧,思想就是兩頭元素逐個比較,如不等,則不是回...

那些年奇葩的面試題

結構和類的區別 1.儲存型別 結構是值型別,儲存在棧上。類是引用型別,儲存在棧上和堆上,堆上儲存真實資料,棧上儲存儲存位址,修改乙個引用的值,另乙個相同的引用的值就會發生改變。2.繼承性 類是可以繼承的,它可以繼承其他的類或者介面,也可以被繼承,並且,類的許多特性是通過繼承來展現的,要阻止類的繼承,...