無序數組中找一個比左邊都大、右邊都小的數

人生第一面 字節跳動

問的這個題

頭腦混亂當時沒做出來 今天寫了

面試題:在一個int數組裏查找這樣的數,它大於等於左側所有數,小於等於右側所有數 返回下標

思路:開數組遍歷數組,保存當前最小值最大值;然後第二遍遍歷的時候直接判斷這個數啊是不是比左邊最大值大、右邊最小值都小就行

def find_the_n(L):
    n = len(L)
    flag1=[0 for i in range(n)]
    flag2=[0 for i in range(n)]
    res=[]

    min_,max_=L[-1],L[0]
    for i in range(n):
        if L[i]>=max_:
            max_=L[i]
        if L[n-i-1]<=min_:
            min_=L[n-i-1]
        flag1[i]=max_
        flag2[n-i-1]=min_
    for i in range(n):
        if L[i]>=flag1[i] and L[i]<=flag2[i]:
            res.append(L[i])

    return res

list1=[21, 11, 45, 56, 9, 66, 77, 89, 78, 68, 100, 120, 111]

print(find_the_n(list1))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章