小小面试题

输入是一串乱序整数A[0]到A[n-1] 求i 和 i+k,其中k > 0, 且 A[i+k] - A[i] 全局最大

我的解决思路:

  1. 求出当前的最小值,并且记录最小值的下标,然后计算的gap,
  2. 判断是不是最大的gap,如果是记录当前的下标的位置以及记录历史的最小值,也就是第1步求得最小值的下标。然后继续往下遍历
 1 def find_max(mylist):
 2     """
 3     >>> a = [1, 2, 1, 1, 3, 2, 3, 4]
 4     >>> find_max(a)
 5     3 7 3
 6     """
 7     min_value = mylist[0]
 8     min_index = 0
 9     global_min_index = 0
10     max_index = 0
11     max_gap = 0
12     for _index, _value in enumerate(mylist):
13         min_value = min(min_value, _value)
14         if min_value == _value:
15             min_index = _index
16         gap = _value - min_value
17         if gap > max_gap:
18             max_index = _index
19             max_gap = gap
20             global_min_index = min_index
21     print max_gap, max_index, global_min_index

 

posted @ 2015-12-27 13:55  GoingMyWay  阅读(142)  评论(0)    收藏  举报