1.
下面數(shù)組是從1到n連續(xù)的數(shù)組(n>2),從中間折斷交換順序后,用二分法找到數(shù)組中 1 的索引。
數(shù)組: [n-x+1, n-x+2, ..., n - 1, n, 1, 2, 3, 4, 5, ..., n-x]
示例: [7,8,9,10,11,12,13,14,15,1,2,3,4,5,6]
我的答案:
step1:先對數(shù)組進(jìn)行升序排序
例:n=15,x=9,arr=[7,8,9,10,11,12,13,14,15,1,2,3,4,5,6]
arr.slice(n-x-1,x).concat(arr.slice(0,n-x-1))
step2:二分法查找
function getLocation(arr, key, startNum, endNum) {
if (arr == null) return -1;
var middleNum = Math.floor((startNum + endNum) / 2);
console.log("中間值:" + middleNum);
if (startNum < endNum) {
if (key == arr[middleNum]) {
return middleNum + 1;
} else if (key < arr[middleNum]) {
return getLocation(arr, key, startNum, middleNum);
} else {
return getLocation(arr, key, middleNum, endNum);
}
} else if (startNum == endNum) {
return startNum;
} else {
return -1;
}
}
console.log(getLocation([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], 10, 1, 15))
面試官說不行,不能先拼,直接二分法查找??二分法不在一個(gè)有序的數(shù)列里怎么使用?感覺是被搞了么
排完序數(shù)組第一個(gè)不就是1嗎還二分干啥?而且,有排序的功夫,復(fù)雜度o(nlogn),你掃一遍數(shù)組不都掃出來了么?所以先排序再二分查找的點(diǎn)在哪里?
不對,你的答案有個(gè)奇怪的東西?。。?!你都知道切割位置是 9 了,還從 9 的位置處 slice 開,再交換位置 concat 再二分查找? What? 什么鬼,你要是都知道要從 9 的地方切開數(shù)組,那答案就是 9+1 ?。。。。?/p>
所以說先審題。
解:若 i < j < k 則升序數(shù)組中 arr[i] < arr[j] < arr[k] 。如果 i、k 是二分中的 low 和 high, j 是中值,不等式哪邊不成立,就說明哪邊不是連續(xù)遞升,拼接點(diǎn)就在哪端。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。