Leetcode 1380 矩阵中的幸运数
C:
int getMinInRow(int **matrix, int rowSize, int rowPoint) { int minPoint = 0, minValue = matrix[rowPoint][0]; for (int i = 1; i < rowSize; i++) { if (matrix[rowPoint][i] < minValue) { minPoint = i; minValue = matrix[rowPoint][i]; } } return minPoint; } int getMaxInCell(int **matrix, int cellSize, int cellPoint) { int maxPoint = 0, maxValue = matrix[0][cellPoint]; for (int i = 1; i < cellSize; i++) { if (matrix[i][cellPoint] > maxValue) { maxPoint = i; maxValue = matrix[i][cellPoint]; } } return maxPoint; } /** * Note: The returned array must be malloced, assume caller calls free(). */ int *luckyNumbers(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) { int *cellCache = (int *)malloc(sizeof(int) * matrixColSize[0]); int *ret = (int *)malloc(sizeof(int) * matrixSize * matrixColSize[0]); int reSize = 0; for (int i = 0; i < *matrixColSize; i++) cellCache[i] = -1; for (int i = 0; i < matrixSize; i++) { int minPoint = getMinInRow(matrix, matrixColSize[0], i); if (cellCache[minPoint] == -1) cellCache[minPoint] = getMaxInCell(matrix, matrixSize, minPoint); if (cellCache[minPoint] == i) { ret[reSize] = matrix[i][minPoint]; reSize++; } } *returnSize = reSize; free(cellCache); return ret; }
JAVA:
class Solution { public List<Integer> luckyNumbers(int[][] matrix) { if (matrix == null || matrix.length == 0) return new ArrayList<Integer>(0); List<Integer> reList = new ArrayList<Integer>(); int[] cellCache = new int[matrix[0].length]; for (int i = 0; i < cellCache.length; i++) cellCache[i] = -1; for (int i = 0; i < matrix.length; i++) { int minPoint = this.getMinInRow(matrix, i); if (cellCache[minPoint] == -1) cellCache[minPoint] = this.getMaxInCell(matrix, minPoint); if (i == cellCache[minPoint]) reList.add(matrix[i][minPoint]); } return reList; } private final int getMinInRow(int[][] matrix, int rowPoint) { int[] row = matrix[rowPoint]; int minPoint = 0, minValue = row[0]; for (int i = 1; i < row.length; i++) { if (row[i] < minValue) { minPoint = i; minValue = row[i]; } } return minPoint; } private final int getMaxInCell(int[][] matrix, int cellPoint) { int maxPoint = 0, maxValue = matrix[0][cellPoint]; for (int i = 1; i < matrix.length; i++) { if (matrix[i][cellPoint] > maxValue) { maxPoint = i; maxValue = matrix[i][cellPoint]; } } return maxPoint; } }
JS:
/** * @param {number[][]} matrix * @return {number[]} */ var luckyNumbers = function (matrix) { if (!matrix || matrix.length == 0) return []; let re = []; let cellCache = new Array(matrix.length); for (let i = 0; i < matrix.length; i++) { let minPoint = getMinInRow(matrix, i); if (!cellCache[minPoint]) cellCache[minPoint] = getMaxInCell(matrix, minPoint); if (cellCache[minPoint] == i) re.push(matrix[i][minPoint]); } return re; }; var getMinInRow = function (matrix, rowPoint) { let row = matrix[rowPoint]; let minPoint = 0, minValue = row[0]; for (let i = 1; i < row.length; i++) { if (row[i] < minValue) { minPoint = i; minValue = row[i]; } } return minPoint; } var getMaxInCell = function (matrix, cellPoint) { let maxPoint = 0, maxValue = matrix[0][cellPoint]; for (let i = 1; i < matrix.length; i++) { if (matrix[i][cellPoint] > maxValue) { maxPoint = i; maxValue = matrix[i][cellPoint]; } } return maxPoint; }
当你看清人们的真相,于是你知道了,你可以忍受孤独
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2020-02-15 JAVA自定义注解的使用的一个简单例子