zoukankan      html  css  js  c++  java
  • <Matrix> 311 378

    311. Sparse Matrix Multiplication

    稀疏矩阵的计算。稀疏矩阵的特点是有大量的0,如果采用暴力算法则比然会有很多无意义的计算。

    C[ i ][ j ] += A[ i ] [ k ] * B[ k ] [ j ]

    我们首先遍历A数组,要确保A[i][k]不为0,才继续计算,然后我们遍历B矩阵的第k行,如果B[K][J]不为0,我们累加结果矩阵res[i][j] += A[i][k] * B[k][j]

    class Solution {
        public int[][] multiply(int[][] A, int[][] B) {
            int m = A.length, n = A[0].length, nB = B[0].length;
            int[][] C = new int[m][nB];
            
            for(int i = 0; i < m; i++){
                for(int k = 0; k < n; k++){
                    if(A[i][k] != 0){
                        for(int j = 0; j < nB; j++){
                            if(B[k][j] != 0) C[i][j] += A[i][k] * B[k][j];
                        }
                    }
                }
            }
            return C;
        }
    }

    378. Kth Smallest Element in a Sorted Matrix

    class Solution {
        public int kthSmallest(int[][] matrix, int k) {
            int lo = matrix[0][0], hi = matrix[matrix.length - 1][matrix[0].length - 1] + 1;
            
            while(lo < hi){
                int count = 0, j = matrix[0].length - 1;
                int mid = lo + (hi - lo) / 2;
                for(int i = 0; i < matrix.length; i++){
                    while(j >= 0 && matrix[i][j] > mid) j--;
                    count += (j + 1);
                }
                if(count < k) lo = mid + 1;
                else hi = mid;
            }
            return lo;
        }
    }
  • 相关阅读:
    UIautomator Python测试
    selenium提供了三种模式的断言:assert,verify,waitfor
    编译标志
    模块级函数
    执行匹配
    反斜杠
    正则表达式
    重复
    字符匹配
    贪婪 vs 不贪婪
  • 原文地址:https://www.cnblogs.com/Afei-1123/p/12029544.html
Copyright © 2011-2022 走看看