[请教] 剑指 offer-二维数组中的查找-时间复杂度

2019-09-04 18:15:57 +08:00
 luckysc
public static boolean find(int[][] matrix, int number) {  
        // 输入条件判断  
        if (matrix == null || matrix.length < 1 || matrix[0].length < 1) {  
            return false;  
        }  
        int rows = matrix.length; // 数组的行数  
        int cols = matrix[1].length; // 数组行的列数  
        int row = 0; // 起始开始的行号  
        int col = cols - 1; // 起始开始的列号  
        // 要查找的位置确保在数组之内  
        while (row >= 0 && row < rows && col >= 0 && col < cols) {  
            if (matrix[row][col] == number) { // 如果找到了就直接退出  
                return true;  
            } else if (matrix[row][col] > number) { // 如果找到的数比要找的数大,说明要找的数在当前数的左边  
                col--; // 列数减一,代表向左移动  
            } else { // 如果找到的数比要找的数小,说明要找的数在当前数的下边  
                row++; // 行数加一,代表向下移动  
            }  
        }  
        return false;  
    }  

这个算法时间复杂度是?

2917 次点击
所在节点    算法
1 条回复
luckysc
2019-09-04 18:16:25 +08:00
是 O(2n) 也就是 O (n) ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/597964

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX