无序数组中找一个比左边都大、右边都小的数
人生第一面 字节跳动
问的这个题
头脑混乱当时没做出来 今天写了
面试题:在一个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))