Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 最小元素_Arrays_Algorithm - Fatal编程技术网

Arrays 最小元素

Arrays 最小元素,arrays,algorithm,Arrays,Algorithm,您将获得一个数组A[]。您需要将该数组精确地划分为K个非空段,并检查所有段中最大元素中的最小元素S是否小于Q。 换句话说,如果我们将每个段的最大元素存储在数组P[]中,那么您必须检查P[]中的最小元素是否小于Q 输入: 输入的第一行包含测试用例的数量T 每个测试用例的第一行包含三个整数: N表示数组A[]中元素的数量,K表示段的数量,Q。 每个测试用例的第二行包含 N个空间分隔整数,A1,A2。。。安 输出: 对于每个测试用例,如果S小于Q,则打印S,否则打印“否”(不带引号)。 每个测试用例的

您将获得一个数组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
以下是我的解决方案: 通过分析,我认为如果我们将数组的最小元素保留在大小为1的段中,那么所有段的最大值中的最小值就是数组的最小元素。这样做,我们只需要比较最小元素和Q,以打印所需的输出

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
,这里一定是出了问题。