现在的位置: 首页 > 综合 > 正文

Hackerrank Angry Children

2018年02月20日 ⁄ 综合 ⁄ 共 484字 ⁄ 字号 评论关闭

先排序,在遍历找最小。 一开始看到测试样例 以为排序完  直接进行 第k个数 减去 第1个数就可以,后来发现 其实题意理解错误了,因为此时的差未必最小,如果有特殊的测试数据,比如说 1 2 3 4 5 5 5 6 这样的话 最小值 应该是1  也就是说  数组内部的数据 可以使相同的,我先入为主 以为数据都是不同的,因此 只能通过特殊的三种数据 ,也就是无重复的,加上对数组的遍历之后就可以解决这个问题了。

#include <iostream>
#include <algorithm>

using namespace std ;

int main()
{
	int n , k ;
	cin >> n >> k;
	int candidate[n];
	int min = 99999999 ;
	for (int i = 0 ; i < n ; ++i)
	            cin >> candidate[i] ;
	sort(candidate,candidate+n) ;
	for ( int i = 0 ; i  < n-k ; ++i)
	{
	
	int unfairness = candidate[i+k-1] - candidate[i] ;
	if( unfairness < min )
	        min = unfairness ;
    }
	cout << min << endl ;
	return 0 ;
}

抱歉!评论已关闭.