找出数组中比左侧所有数大比右侧所有数小的数,复杂度O(n)(go实现)

func middleNum()  {
   s := [7]int{7, 10, 2, 6, 19, 22, 32}
   fmt.Println("s = ", s)

   //InitData(s)
   fmt.Println("s = ", s)
   n := len(s)

   //存放每个数左侧最大数
   leftMax := [7] int{}

   //存放每个数右侧最小数
   rightMin := [7] int{}



   min := s[n-1]
   max := s[0]

   //记下每个数左边最大和右边最小数
   for i := 0; i<n; i++{
      if(max < s[i]){
         max = s[i]
      }
      if(min > s[n-1-i]){
         min = s[n-1-i]
      }
      rightMin[n-1-i] = min
      leftMax[i] = max
   }
   fmt.Println("rightMin=",rightMin)
   fmt.Println("leftMax=",leftMax)


   //对比每个数的左边最大和右边最小数,如相等则说明这个数符和(大于左侧所有数小于右侧所有数)
   for i := 0; i<n; i++ {
      if(rightMin[i] == leftMax[i]){
         fmt.Println("is right,index=",i,",num=",s[i])

      }
   }

}
posted @ 2021-02-05 14:54  陆何方  阅读(224)  评论(0)    收藏  举报