1. 對於乙個有序陣列,我們通常採用二分查詢的方式來定位某一元素,請編寫二分查詢的演算法,在陣列中查詢指定元素。
給定乙個整數陣列a及它的大小n,同時給定要查詢的元素val,請返回它在陣列中的位置(從0開始),若不存在該元素,返回-1。若該元素出現多次,請返回第一次出現的位置。
測試樣例:
[1,3,5,7,9],5,3
返回:1不一樣的地方就是要返回第一次出現的位置
我先用了遞迴做還加了指標,然後超出記憶體,然後改成了非遞迴,然後超時,再然後就是改成了如果中間值小於等於val就只查詢左半部分.......然後通過了,
classbinarysearch
}else l = mid + 1
; }
if (min ==n)
return -1
;
else
}};
2. 對於乙個字串,請設計乙個高效演算法,找到第一次重複出現的字元。給定乙個字串(不一定全為字母)a及它的長度n。請返回第乙個重複出現的字元。保證字串中有重複字元,字串的長度小於等於500。 測試樣例:
"qywyer23tdd",11
返回:y
classfirstrepeat
}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這個標頭檔案給我用,所以只能乙個乙個判斷了,然後用了插入排序,交換字串........
classcoder
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...