去哪兒筆試的三個程式設計題

2022-09-09 02:30:13 字數 1664 閱讀 2796

1.  對於乙個有序陣列,我們通常採用二分查詢的方式來定位某一元素,請編寫二分查詢的演算法,在陣列中查詢指定元素。

給定乙個整數陣列a及它的大小n,同時給定要查詢的元素val,請返回它在陣列中的位置(從0開始),若不存在該元素,返回-1。若該元素出現多次,請返回第一次出現的位置。

測試樣例:

[1,3,5,7,9],5,3
返回:1

不一樣的地方就是要返回第一次出現的位置

我先用了遞迴做還加了指標,然後超出記憶體,然後改成了非遞迴,然後超時,再然後就是改成了如果中間值小於等於val就只查詢左半部分.......然後通過了,

class

binarysearch

}else l = mid + 1

; }

if (min ==n)

return -1

;

else

}};

2. 對於乙個字串,請設計乙個高效演算法,找到第一次重複出現的字元。
給定乙個字串(不一定全為字母)a及它的長度n。請返回第乙個重複出現的字元。保證字串中有重複字元,字串的長度小於等於500。

測試樣例:

"qywyer23tdd",11
返回:y

class

firstrepeat

}return0;

}};

3.  請設計乙個高效演算法,再給定的字串陣列中,找到包含"coder"的字串(不區分大小寫),並將其作為乙個新的陣列返回。結果字串的順序按照"coder"出現的次數遞減排列,若兩個串中"coder"出現的次數相同,則保持他們在原陣列中的位置關係。

給定乙個字串陣列a和它的大小n,請返回結果陣列。保證原陣列大小小於等於300,其中每個串的長度小於等於200。同時保證一定存在包含coder的字串。

測試樣例:

["i am a coder","coder coder","code"],3
返回:["coder coder","i am a coder"]

其實很想用正則去匹配的,但是沒有regex這個標頭檔案給我用,所以只能乙個乙個判斷了,然後用了插入排序,交換字串........

class

coder

else i++;

}return

count;

}vector

findcoder(vector a, int

n)

for (int i = 0; i < n; i++)

cout

<< vec[i] << "";

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

a[j] =temp;

}

return

a; }

};

筆試刷題 去哪兒

題目描述 時間限制 3秒 空間限制 32768k 血型遺傳對照表如下 父母血型 子女會出現的血型 子女不會出現的血型 o與o o a,b,ab a與o a,o b,ab a與a a,o b,ab a與b a,b,ab,o a與ab a,b,ab o b與o b,o a,ab b與b b,o a,ab...

2016去哪兒程式設計題 表示式合法判斷

寫一段 判斷乙個包括 的表示式是否合法 注意看樣例的合法規則。給定乙個表示式a,請返回乙個bool值,代表它是否合法。測試樣例 a b 5 4 返回 true測試樣例 a b 5 4 返回 false 解題 不考慮左右括號是否匹配,不考慮括號內是否由數字,如 2 1 map.put for int ...

新浪筆試程式設計題三

一維點對問題 集合s中有直線上的n個點,n 1 實現函式求出n個點之間的最短距離,並寫出時間複雜度 先使用排序演算法將點的座標排序,然後求相鄰兩點之間的最短距離即可,快排時間複雜度較低 public class main3 nums i x return i public void quicksor...