給你一個長度爲n的整數序列A1,A2,……,An,找出兩個整數Ai和Aj(i<j),使得Ai-Aj儘可能大。數組
2 3 5 2 1 6 2 3 6 2 1 -1
4 1 3 7 3 6
此題用窮舉法時間代價爲O(n^2),會超過期間限制。因此要用下面這種方法。
#include<stdio.h> int main() { int T; scanf("%d", &T); while (T--) { int n, m, s = -200000; scanf("%d", &n); scanf("%d", &m); int max = m, index = 0, left, right; //index用於記錄數組最大值 for (int i = 1; i < n; i++){ //left,right分別記錄下標 scanf("%d", &m); if (max-m > s) { s = max-m; left = index; right = i; } if (m > max) {//在尋找最大差值的同時,尋找最大值。 index = i; max = m; } } printf("%d %d %d\n", s, left+1, right+1); } }