Arrays 最小元素
您将获得一个数组A[]。您需要将该数组精确地划分为K个非空段,并检查所有段中最大元素中的最小元素S是否小于Q。 换句话说,如果我们将每个段的最大元素存储在数组P[]中,那么您必须检查P[]中的最小元素是否小于Q 输入: 输入的第一行包含测试用例的数量T 每个测试用例的第一行包含三个整数: N表示数组A[]中元素的数量,K表示段的数量,Q。 每个测试用例的第二行包含 N个空间分隔整数,A1,A2。。。安 输出: 对于每个测试用例,如果S小于Q,则打印S,否则打印“否”(不带引号)。 每个测试用例的答案都应该换成一行 限制条件:Arrays 最小元素,arrays,algorithm,Arrays,Algorithm,您将获得一个数组A[]。您需要将该数组精确地划分为K个非空段,并检查所有段中最大元素中的最小元素S是否小于Q。 换句话说,如果我们将每个段的最大元素存储在数组P[]中,那么您必须检查P[]中的最小元素是否小于Q 输入: 输入的第一行包含测试用例的数量T 每个测试用例的第一行包含三个整数: N表示数组A[]中元素的数量,K表示段的数量,Q。 每个测试用例的第二行包含 N个空间分隔整数,A1,A2。。。安 输出: 对于每个测试用例,如果S小于Q,则打印S,否则打印“否”(不带引号)。 每个测试用例的
- 一,≤ T≤ 十,
- 一,≤ N≤ 10^5
- 一,≤ K≤ N
- 0≤ Q≤ 10^9
- 一,≤ A[i]≤ 10^9
public static void main(String[] args)
{
Scanner s=new Scanner(System.in);
int t = s.nextInt();
int n, k, q, i, min;
while (t-- > 0)
{
n = s.nextInt();
k = s.nextInt();
q = s.nextInt();
int[] a = new int[n];
for(i = 0; i < n; i++)
a[i] = s.nextInt();
min = 0;
for(i = 1; i < n; i++) {
if(a[i] < a[min]) {
min = i;
}
}
if(a[min] < q)
System.out.println(a[min]);
else
System.out.println("NO");
}
}
publicstaticvoidmain(字符串[]args)
{
扫描仪s=新的扫描仪(System.in);
int t=s.nextInt();
int n,k,q,i,min;
而(t-->0)
{
n=s.nextInt();
k=s.nextInt();
q=s.nextInt();
int[]a=新的int[n];
对于(i=0;i
该解决方案满足除一个测试用例之外的所有测试用例,并且该测试用例是隐藏的。任何人都可以帮我解决这个问题。问题清楚地表明“您需要将此数组精确地划分为K个非空段,并检查所有段中最大元素中的最小元素S是否小于Q。” 正如评论中指出的,您在程序中根本没有使用“k” 示例:
n=6
A[]=[17,3,2,5,8,19]
k=3
Q=7 根据您的代码,因为min元素是2,所以输出将是2(2<7)。但是,问题要求首先将数组按k等分(本例中为3)分段,然后在最大分段中找到最小值,然后将其与Q进行比较。 所以,如果我们把数组A[]分成3段{17,3},{2,5},{8,19},我们会看到所有max的min元素都是5。因为,5<7,所以输出将为5
这是基于我对问题的理解。然而,如何基于“k”进行分段还不太清楚。我假设了一个顺序分段 我明白了,这个问题已经在Hackerth上的毛细血管软件Hackathon中提出了 这个问题很模糊。“k”没有明确的定义,它应该是均匀分布还是随机分布等 此代码通过了一个您无法通过的情况,但在所有其他情况下都失败:
t = int(raw_input())
for _ in range(t):
n,k,q = map(int,raw_input().split())
arr = map(int,raw_input().split())
qt = n/k
arr_new = []
for i in range(k):
max_num = max(arr[i*qt : (i+1)*qt])
arr_new.append(max_num)
min_num = min(arr_new)
if(min_num < q):
print min_num
else:
print "NO"
t=int(原始输入()
对于范围(t)内的uu:
n、 k,q=map(int,原始输入().split())
arr=map(int,原始输入().split())
qt=n/k
arr_new=[]
对于范围(k)内的i:
max_num=max(arr[i*qt:(i+1)*qt])
arr_new.append(最大数量)
最小值=最小值(arr\u new)
如果(最小数量
您的程序根本没有使用k
,这里一定是出了问题。