您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了java如何在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶大家一起來研究并學(xué)習(xí)一下“java如何在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置”這篇文章吧。
給定一個(gè)按照升序排列的整數(shù)數(shù)組 nums
,和一個(gè)目標(biāo)值 target
。找出給定目標(biāo)值在數(shù)組中的開始位置和結(jié)束位置。
你的算法時(shí)間復(fù)雜度必須是 O(log n) 級(jí)別。
如果數(shù)組中不存在目標(biāo)值,返回 [-1, -1]
。
示例 1:
輸入: nums = [, target = 8 輸出: [3,4]
示例 2:
輸入: nums = [, target = 6 輸出: [-1,-1]
搜索旋轉(zhuǎn)排序數(shù)組
解析:
如果沒有旋轉(zhuǎn),他是個(gè)升序的數(shù)組,我們可以使用二分法查找很快找出結(jié)果,但這里的數(shù)組出現(xiàn)了旋轉(zhuǎn),所以我們不能直接使用二分法來查找,不過我們可以來改一下。我們知道在某個(gè)點(diǎn)上旋轉(zhuǎn)之后,在這個(gè)點(diǎn)之前的都是大于這個(gè)點(diǎn)之后的,如果中間值和查找值都小于數(shù)組的第一個(gè)元素,那么說明中間值和查找值都在這個(gè)旋轉(zhuǎn)點(diǎn)的后面,直接在后面找就行了,前面的可以直接忽略了。否則中間值和查找值最少有一個(gè)在這個(gè)旋轉(zhuǎn)點(diǎn)之前,然后再接著判斷。然后下面會(huì)有兩種情況,第一種是中間值在前面,查找值在后面,那么這種情況就繼續(xù)往后找lo=mid+1,第二種情況是查找值和中間值都在前面,那么只需要查找前面部分就可以了,
Java的基本數(shù)據(jù)類型分為:1、整數(shù)類型,用來表示整數(shù)的數(shù)據(jù)類型。2、浮點(diǎn)類型,用來表示小數(shù)的數(shù)據(jù)類型。3、字符類型,字符類型的關(guān)鍵字是“char”。4、布爾類型,是表示邏輯值的基本數(shù)據(jù)類型。
以上就是關(guān)于“java如何在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置”的內(nèi)容,如果該文章對(duì)您有所幫助并覺得寫得不錯(cuò),勞請(qǐng)分享給您的好友一起學(xué)習(xí)新知識(shí),若想了解更多相關(guān)知識(shí)內(nèi)容,請(qǐng)多多關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。