arrays - 查找 1 数量最多的行

标签 arrays algorithm matrix optimization

给定一个 n x m 维的 bool 二维数组,其中每行都已排序。查找具有最大数量 1 的第一行的从 0 开始的索引。

下面是我写的代码

int rowWithMax1s(int arr[][], int n, int m) {
        int ans = -1;
        int row = 0;
        int col = m-1;
        while(row<n && col>=0){
            if(arr[row][col] == 1){
                col--;
                ans = row;
            }
            else{
                row++;
            }
        }
        return ans;
    }

我认为上述的时间复杂度是 O(M+N)。但它给我的时间限制超出了错误。

这是问题的链接 https://practice.geeksforgeeks.org/problems/row-with-max-1s0023/1#

请帮助我还可以做些什么来优化我的代码。

最佳答案

我很确定这不是你的错,而是驱动程序代码的错。

如果您提交几次,您可能会很幸运并被接受。我也尝试过这个:

class Solution {
    static int total = 0;
    int rowWithMax1s(int arr[][], int n, int m) {
        if ((total += n + m) > 300000)
            throw new RuntimeException("darn");
        ...
        (your actual solution)
        ...

经过几次尝试后被接受了。 300,000 个相对简单的 Java 步骤不可能花费超过 2 秒。

但是,如果您在代码编辑器中单击第 1 行,您会看到其驱动程序代码,该代码读取整个矩阵(或者更确切地说,对于所有测试用例,读取所有矩阵)。这很可能就是所有时间都去的地方。我们甚至不被允许编辑该部分。你可以尝试另一种语言。我用 Python 写了一个类似的解决方案,我提交了五次,它都被接受了。

关于arrays - 查找 1 数量最多的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69225274/

相关文章:

algorithm - NumPy:均匀分布的N维样本

c++ - GLM乘法顺序

matlab - 检查向量元素与矩阵元素

arrays - Matlab 不使用循环创建新的值数组

c - 如何读取数组直到新行 '\n'?

php - 在php中递归搜索所有目录中的字符串数组

python - 如何唤醒房间里最多的人?

python - Python 中的 Inteviewstreet 中位数。除了第一个测试用例之外的所有测试都失败

arrays - 我如何遍历子数组的数组

javascript - `map()` 的奇怪行为