找出数组中比左边都大比右边的都小的元素,要求时间复杂度O(n),空间复杂度O(n)

var testArray = []int{1, 8, 6, 9, 10, 15, 12, 20}
testArrayLen := len(testArray)
minNum := testArray[testArrayLen-1]
maxNum := testArray[0]
minArray := make([]int, testArrayLen)
for i := testArrayLen - 1; i >= 0; i-- {
    if testArray[i] < minNum {
        minNum = testArray[i]
    }
    minArray[i] = minNum
}

for i := 0; i < testArrayLen-1; i++ {
    if testArray[i] > maxNum {
        maxNum = testArray[i]
        if testArray[i] < minArray[i+1] {
            fmt.Println(i)
        }
    }
}
添加新评论