测试用例无法满足

拉加夫

我只是一个初学者。我遇到了这个问题,我的代码无法满足所有/大多数测试用例。

问题:

给定一个数字数组,请找到最小和最大元素相同的非空子数组的数量。

例子:

输入:数组= [1、1、3]

输出4

解释:

所需的子数组为[1],[1],[3],[1,1]

我的解决方案:

对数组进行排序并解决问题。

代码:

for(int i = 0; i < testCases; i++){
        int arraySize = in.nextInt();
        int array[] = new int[arraySize];
        for(int j = 0; j < arraySize; j++){
            array[j] = in.nextInt();
        }
        temp[i] = (findSubArrays(array));
}
for(int i = 0; i < testCases; i++){
        System.out.println(temp[i]);
}

private static int findSubArrays(int[] array) {
    Arrays.sort(array);

   //Since each element can form a sub-array of its own
    int noOfSubArrays = array.length;

    for(int i = 0; i < array.length-1; i++){
        if(array[i] == array[i+1]){
            noOfSubArrays++;
        }
    }
    return noOfSubArrays;
}
shmosel

因此,您正在对数组进行排序,以使起点和终点保持相邻,因此您不需要嵌套的遍历。那讲得通。问题在于您要计算相邻的重复项,但真正需要的是T(n)或连续重复项的三角形数。考虑一个简单的场景:

[1, 1, 1]

您的算法返回5,但实际上有6个子集(按开始和结束索引):

0, 0
0, 1
0, 2
1, 1
1, 2
2, 2

因此,让我们更新算法以计算每个序列的三角形数:

private static int findSubArrays(int... array) {
    Arrays.sort(array);

    int sequenceCount = 0;
    int total = 0;
    for (int i = 0; i < array.length + 1; i++) {
        if (i == array.length || (i > 0 && array[i] != array[i - 1])) {
            total += triangle(sequenceCount);
            sequenceCount = 0;
        }
        sequenceCount++;
    }
    return total;
}

private static int triangle(int n) {
    return (n * (n + 1)) / 2;
}

现在调用findSubArrays(1, 1, 1)return6findSubArrays(1, 1, 3)return 4

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法通过测试用例从src / main / resources访问文件

来自分类Dev

阳性测试用例和阴性测试用例

来自分类Dev

Android测试用例顺序

来自分类Dev

在测试集中获取所有测试用例无法返回所有测试用例v2.0

来自分类Dev

beforeInterceptor的测试用例

来自分类Dev

UIautomator测试用例Android

来自分类Dev

无法从Ant运行Groovy测试用例

来自分类Dev

Jenkins中的测试用例

来自分类Dev

放气测试用例

来自分类Dev

Junit测试用例

来自分类Dev

jqgrid的Qunit测试用例

来自分类Dev

phpunit InvalidArgumentException的测试用例

来自分类Dev

无法在Jasmine JS的测试用例中创建“ if语句”

来自分类Dev

GNU使简单测试用例无法正常工作

来自分类Dev

测试用例的Android权限

来自分类Dev

无法使用Marbel测试编写测试用例

来自分类Dev

PrimeNg确认服务的Jasmine测试用例无法正常工作

来自分类Dev

无法添加JUnit 5测试用例

来自分类Dev

公理测试用例无法运行

来自分类Dev

无法在测试用例源中分配动态值

来自分类Dev

beforeInterceptor的测试用例

来自分类Dev

无法从Ant运行Groovy测试用例

来自分类Dev

从测试用例中激活测试用例

来自分类Dev

CppUnit:无法编写测试用例

来自分类Dev

测试用例assertException

来自分类Dev

无法通过在线法官的所有测试用例

来自分类Dev

无法运行 jest 测试用例

来自分类Dev

无法在 jasmine 测试用例中覆盖 ngOnInit()

来自分类Dev

无法覆盖 Junit 中的测试用例?