小小面试题
输入是一串乱序整数A[0]到A[n-1] 求i 和 i+k,其中k > 0, 且 A[i+k] - A[i] 全局最大
我的解决思路:
- 求出当前的最小值,并且记录最小值的下标,然后计算的gap,
- 判断是不是最大的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
浙公网安备 33010602011771号