Cho mảng n phần tử A. Tìm hiệu nhỏ nhất giữa hai phần tử bất kỳ. A = [30, 5, 20, 9], kết quả 4 (khoảng cách 5 và 9).
Giải quyết:
- Sắp xếp mảng không giảm
- Khởi tạo hiệu vô cùng
- So sánh các cặp liền kề trong mảng đã sắp, giữ min
Ví dụ mã nguồn
#include<iostream> #include<algorithm> using namespace std; int getMinimumDifference(int a[], int n) { sort(a, a+n); int min_diff = INT_MAX; for (int i=0; i<n-1; i++) if (a[i+1] - a[i] < min_diff) min_diff = a[i+1] - a[i]; return min_diff; } int main() { int arr[] = {30, 5, 20, 9}; int n = sizeof(arr)/sizeof(arr[0]); cout << "Minimum difference between two elements is: " << getMinimumDifference(arr, n); } Kết quả
Minimum difference between two elements is: 4