1,问题描述
2643. 一最多的行
难度:简单
给你一个大小为 m x n
的二进制矩阵 mat
,请你找出包含最多 1 的行的下标(从 0 开始)以及这一行中 1 的数目。
如果有多行包含最多的 1 ,只需要选择 行下标最小 的那一行。
返回一个由行下标和该行中 1 的数量组成的数组。
示例 1:
1 2 3
| 输入:mat = [[0,1],[1,0]] 输出:[0,1] 解释:两行中 1 的数量相同。所以返回下标最小的行,下标为 0 。该行 1 的数量为 1 。所以,答案为 [0,1] 。
|
示例 2:
1 2 3
| 输入:mat = [[0,0,0],[0,1,1]] 输出:[1,2] 解释:下标为 1 的行中 1 的数量最多。该行 1 的数量为 2 。所以,答案为 [1,2] 。
|
示例 3:
1 2 3
| 输入:mat = [[0,0],[1,1],[0,0]] 输出:[1,2] 解释:下标为 1 的行中 1 的数量最多。该行 1 的数量为 2 。所以,答案为 [1,2] 。
|
提示:
m == mat.length
n == mat[i].length
1 <= m, n <= 100
mat[i][j]
为 0
或 1
2,初步思考
简单题目,直接秒了
遍历比较输出即可
3,代码处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| import java.util.Arrays;
public class _2643一最多的行 {
public int[] rowAndMaximumOnes(int[][] mat) { int idx = 0; int idxMax = 0; int cnt = 0; while (idx < mat.length) { int cur = 0; for (int i = 0; i < mat[idx].length; i++) { cur += mat[idx][i]; } if (cur > cnt) { cnt = cur; idxMax = idx; } idx++; } return new int[]{idxMax, cnt}; }
public int[] rowAndMaximumOnes_math(int[][] mat) { int idxMax = 0; int cntMax = 0; for (int i = 0; i < mat.length; i++) { int cnt = Arrays.stream(mat[i]).sum(); if (cnt > cntMax) { cntMax = cnt; idxMax = i; } } return new int[]{idxMax, cntMax}; } }
|