HackerRank - angry-children 【排序】

mac2022-06-30  27

题意 求一个序列当中 其 长度为 K 的子序列 中的 最大值 - 最小值 求 这个值 最小是多少

思路 先将序列排序 然后 I = 0, J = K - 1 然后 往下遍历 如果 arr[j] - arr[i] < ans 则更新答案 就可以了

AC代码

#include <cstdio> #include <cstring> #include <ctype.h> #include <cstdlib> #include <climits> #include <iostream> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue> #include <string> #include <map> #include <stack> #include <set> #include <numeric> #include <sstream> #include <iomanip> #include <limits> using namespace std; typedef long long ll; typedef long double ld; typedef pair <int, int> pii; typedef pair <ll, ll> pll; const double PI = 3.14159265358979323846264338327; const double E = exp(1); const double eps = 1e-6; const int INF = 0x3f3f3f3f; const int maxn = 1e5 + 5; const int MOD = 1e9 + 7; int arr[maxn] = {0}; int main() { int n, k; scanf("%d%d", &n, &k); for (int i = 0; i < n; i++) scanf("%d", &arr[i]); sort (arr, arr + n); int ans = INF; for (int i = 0, j = k - 1; j < n; i++, j++) { int num = arr[j] - arr[i]; if (num < ans) ans = num; } printf("%d\n", ans); }

转载于:https://www.cnblogs.com/Dup4/p/9433246.html

相关资源:cs50g-angry-50:CS50游戏开发项目6-源码
最新回复(0)