讨论/题目交流/🐱 力扣第 9 场夜喵双周赛/
🐱 力扣第 9 场夜喵双周赛

欢迎在这里交流分享你的参赛心得以及体验。
image.png

展开讨论
力扣 (LeetCode)发起于 2019-09-21
最近编辑于 2019-09-21

发一下第三题的源码吧。感觉复杂度略高。

class Solution {
    public int smallestCommonElement(int[][] mat) {
        int rowNum = mat.length;
        if (rowNum==1)
            return mat[0][0];
        int colNum = mat[0].length;
        int[] ids = new int[rowNum];
        while (true) {
            int mId = findMax(mat, ids, rowNum);
            boolean same = true;
            int compare = mat[mId][ids[mId]];
            for (int i=0; i<rowNum; i++) {
                int j=ids[i];
                for (; j<colNum; j++) {
                    if (mat[i][j] == compare) {
                        ids[i] = j;
                        break;
                    } else if (mat[i][j] > compare) {
                        ids[i] = j;
                        same = false;
                        break;
                    }
                }
                if (j==colNum)
                    return -1;
            }
            if (same)
                return compare;
        }
    }
    
    private int findMax(int[][] mat, int[] ids, int len) {
        int maxId = 0;
        for (int i=0; i<len; i++) {
            if (mat[i][ids[i]] > mat[maxId][ids[maxId]]) {
                maxId = i;
            }
        }
        return maxId;
    }
}
展开全部 9 讨论