數(shù)組6 最短無(wú)序連續(xù)子數(shù)組

給定一個(gè)整數(shù)數(shù)組,你需要尋找一個(gè)連續(xù)的子數(shù)組,如果對(duì)這個(gè)子數(shù)組進(jìn)行升序排序,那么整個(gè)數(shù)組都會(huì)變?yōu)樯蚺判颉?/p>

你找到的子數(shù)組應(yīng)是最短的,請(qǐng)輸出它的長(zhǎng)度。

示例 1:

輸入: [2, 6, 4, 8, 10, 9, 15]

輸出: 5

解釋: 你只需要對(duì) [6, 4, 8, 10, 9] 進(jìn)行升序排序,那么整個(gè)表都會(huì)變?yōu)樯蚺判颉?/p>

說(shuō)明 :

輸入的數(shù)組長(zhǎng)度范圍在?[1, 10,000]。

輸入的數(shù)組可能包含重復(fù)元素?,所以升序的意思是<=。


思路1:

排序的思想,和排好序的數(shù)組對(duì)比:

取出第一個(gè)的最小下標(biāo)和最后一個(gè)的最大下標(biāo),相差加1即是最短無(wú)序子數(shù)組長(zhǎng)度

官方的解釋是:另一個(gè)簡(jiǎn)單的想法是:我們將數(shù)組 numsnums 進(jìn)行排序,記為 nums\_sortednums_sorted 。然后我們比較 numsnums 和 nums\_sortednums_sorted 的元素來(lái)決定最左邊和最右邊不匹配的元素。它們之間的子數(shù)組就是要求的最短無(wú)序子數(shù)組。


代碼如下:

nums1=[]

????????for?i?in?range(len(nums)):

????????????nums1.append(nums[i])

????????nums.sort()

????????start=len(nums)

????????end=0

????????for?i?in?range(len(nums)):

????????????if?nums[i]!=nums1[i]:

????????????????start?=?min(start,?i)

????????????????end?=?max(end,?i)

????????if?end?-?start?>=?0:

????????????ans=end?-?start+1

????????else:

????????????ans=0

????????return?ans

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容