From 57c3bf05a219f7af6399e416118e838898c46824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BD=A9=E8=BE=95=E9=BE=99=E5=84=BF?= Date: Tue, 28 Feb 2023 14:53:56 +0800 Subject: [PATCH] =?UTF-8?q?1252:=E5=A5=87=E6=95=B0=E5=80=BC=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=A0=BC=E7=9A=84=E6=95=B0=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/CellsWithOddValuesInAMatrix.java | 92 +++++++++++++++++++ .../content/CellsWithOddValuesInAMatrix.md | 53 +++++++++++ 2 files changed, 145 insertions(+) create mode 100644 src/main/java/leetcode/editor/cn/CellsWithOddValuesInAMatrix.java create mode 100644 src/main/java/leetcode/editor/cn/doc/content/CellsWithOddValuesInAMatrix.md diff --git a/src/main/java/leetcode/editor/cn/CellsWithOddValuesInAMatrix.java b/src/main/java/leetcode/editor/cn/CellsWithOddValuesInAMatrix.java new file mode 100644 index 0000000..ecfc1e7 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/CellsWithOddValuesInAMatrix.java @@ -0,0 +1,92 @@ +//

给你一个 m x n 的矩阵,最开始的时候,每个单元格中的值都是 0

+// +//

另有一个二维索引数组 indicesindices[i] = [ri, ci] 指向矩阵中的某个位置,其中 rici 分别表示指定的行和列(0 开始编号)。

+// +//

indices[i] 所指向的每个位置,应同时执行下述增量操作:

+// +//
    +//
  1. ri 行上的所有单元格,加 1
  2. +//
  3. ci 列上的所有单元格,加 1
  4. +//
+// +//

给你 mnindices 。请你在执行完所有 indices 指定的增量操作后,返回矩阵中 奇数值单元格 的数目。

+// +//

 

+// +//

示例 1:

+// +//

+// +//
+//输入:m = 2, n = 3, indices = [[0,1],[1,1]]
+//输出:6
+//解释:最开始的矩阵是 [[0,0,0],[0,0,0]]。
+//第一次增量操作后得到 [[1,2,1],[0,1,0]]。
+//最后的矩阵是 [[1,3,1],[1,3,1]],里面有 6 个奇数。
+//
+// +//

示例 2:

+// +//

+// +//
+//输入:m = 2, n = 2, indices = [[1,1],[0,0]]
+//输出:0
+//解释:最后的矩阵是 [[2,2],[2,2]],里面没有奇数。
+//
+// +//

 

+// +//

提示:

+// +// +// +//

 

+// +//

进阶:你可以设计一个时间复杂度为 O(n + m + indices.length) 且仅用 O(n + m) 额外空间的算法来解决此问题吗?

+// +//
Related Topics
  • 数组
  • 数学
  • 模拟

  • 👍 142
  • 👎 0
  • +package leetcode.editor.cn; + +// 1252:奇数值单元格的数目 +public class CellsWithOddValuesInAMatrix { + public static void main(String[] args) { + Solution solution = new CellsWithOddValuesInAMatrix().new Solution(); + // TO TEST + } + + //leetcode submit region begin(Prohibit modification and deletion) + class Solution { + public int oddCells(int m, int n, int[][] indices) { + int[] arrm = new int[m]; + int[] arrn = new int[n]; + for (int[] indix : indices) { + arrm[indix[0]]++; + arrn[indix[1]]++; + } + int m0 = 0, m1 = 0, n0 = 0, n1 = 0; + for (int num : arrm) { + if (num % 2 == 0) { + m0++; + } else { + m1++; + } + } + for (int num : arrn) { + if (num % 2 == 0) { + n0++; + } else { + n1++; + } + } + return m0 * n1 + m1 * n0; + } + } +//leetcode submit region end(Prohibit modification and deletion) + +} diff --git a/src/main/java/leetcode/editor/cn/doc/content/CellsWithOddValuesInAMatrix.md b/src/main/java/leetcode/editor/cn/doc/content/CellsWithOddValuesInAMatrix.md new file mode 100644 index 0000000..948e83c --- /dev/null +++ b/src/main/java/leetcode/editor/cn/doc/content/CellsWithOddValuesInAMatrix.md @@ -0,0 +1,53 @@ +

    给你一个 m x n 的矩阵,最开始的时候,每个单元格中的值都是 0

    + +

    另有一个二维索引数组 indicesindices[i] = [ri, ci] 指向矩阵中的某个位置,其中 rici 分别表示指定的行和列(0 开始编号)。

    + +

    indices[i] 所指向的每个位置,应同时执行下述增量操作:

    + +
      +
    1. ri 行上的所有单元格,加 1
    2. +
    3. ci 列上的所有单元格,加 1
    4. +
    + +

    给你 mnindices 。请你在执行完所有 indices 指定的增量操作后,返回矩阵中 奇数值单元格 的数目。

    + +

     

    + +

    示例 1:

    + +

    + +
    +输入:m = 2, n = 3, indices = [[0,1],[1,1]]
    +输出:6
    +解释:最开始的矩阵是 [[0,0,0],[0,0,0]]。
    +第一次增量操作后得到 [[1,2,1],[0,1,0]]。
    +最后的矩阵是 [[1,3,1],[1,3,1]],里面有 6 个奇数。
    +
    + +

    示例 2:

    + +

    + +
    +输入:m = 2, n = 2, indices = [[1,1],[0,0]]
    +输出:0
    +解释:最后的矩阵是 [[2,2],[2,2]],里面没有奇数。
    +
    + +

     

    + +

    提示:

    + + + +

     

    + +

    进阶:你可以设计一个时间复杂度为 O(n + m + indices.length) 且仅用 O(n + m) 额外空间的算法来解决此问题吗?

    + +
    Related Topics
  • 数组
  • 数学
  • 模拟

  • 👍 142
  • 👎 0
  • \ No newline at end of file