[杨小白]_leetcode_力扣一周涨分64!!第 92 场双周赛-第一、二题

167 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情

前言

小白算法比较菜,希望能激励我每日更新,从leetcode第一题开始,2022年目标1900分,现在1806!!

力扣第 92 场双周赛-力扣

第 92 场双周赛 - 力扣(LeetCode)

前三题都不咋难,第四题没做出来,,一直超时,确实有点难。

周日打周赛的人都不多了,周六的双周赛更少了。

image.png

6249. 分割圆的最少切割次数

圆内一个 有效切割 ,符合以下二者之一:

该切割是两个端点在圆上的线段,且该线段经过圆心。 该切割是一端在圆心另一端在圆上的线段。 一些有效和无效的切割如下图所示。

代码

无语,还是wa了一发,n等于1的时候,return 0

一定要注意

class Solution {
    public int numberOfCuts(int n) {
        if(n == 1) return 0;
        if(n % 2 == 0) {
            return n / 2;
        } else {
            return n;
        }
    }
}

6277. 行和列中一和零的差值

给你一个下标从 0 开始的 m x n 二进制矩阵 grid 。

我们按照如下过程,定义一个下标从 0 开始的 m x n 差值矩阵 diff :

令第 i 行一的数目为 onesRowi 。

令第 j 列一的数目为 onesColj 。

令第 i 行零的数目为 zerosRowi 。

令第 j 列零的数目为 zerosColj 。

diff[i][j] = onesRowi + onesColj - zerosRowi - zerosColj

请你返回差值矩阵 diff 。

 ## 示例 1

image.png

输入:grid = [[0,1,1],[1,0,1],[0,0,1]]

输出:[[0,0,4],[0,0,4],[-2,-2,2]]

解释:

  • diff[0][0] = onesRow0 + onesCol0 - zerosRow0 - zerosCol0 = 2 + 1 - 1 - 2 = 0
  • diff[0][1] = onesRow0 + onesCol1 - zerosRow0 - zerosCol1 = 2 + 1 - 1 - 2 = 0
  • diff[0][2] = onesRow0 + onesCol2 - zerosRow0 - zerosCol2 = 2 + 3 - 1 - 0 = 4
  • diff[1][0] = onesRow1 + onesCol0 - zerosRow1 - zerosCol0 = 2 + 1 - 1 - 2 = 0
  • diff[1][1] = onesRow1 + onesCol1 - zerosRow1 - zerosCol1 = 2 + 1 - 1 - 2 = 0
  • diff[1][2] = onesRow1 + onesCol2 - zerosRow1 - zerosCol2 = 2 + 3 - 1 - 0 = 4
  • diff[2][0] = onesRow2 + onesCol0 - zerosRow2 - zerosCol0 = 1 + 1 - 2 - 2 = -2
  • diff[2][1] = onesRow2 + onesCol1 - zerosRow2 - zerosCol1 = 1 + 1 - 2 - 2 = -2
  • diff[2][2] = onesRow2 + onesCol2 - zerosRow2 - zerosCol2 = 1 + 3 - 2 - 0 = 2

代码

直接模拟,就可以了,这次周赛都没什么难的。

class Solution {
    public int[][] onesMinusZeros(int[][] grid) {
//            令第 i 行一的数目为 onesRowi 。
//            令第 j 列一的数目为 onesColj 。
//            令第 i 行零的数目为 zerosRowi 。
//            令第 j 列零的数目为 zerosColj 。
        int[] onesRowi = new int[grid.length];
        int[] zerosRowi = new int[grid.length];
        int[] onesColj = new int[grid[0].length];
        int[] zerosColj = new int[grid[0].length];
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[0].length; j++) {
                if (grid[i][j] == 1) {
                    onesColj[j] += 1;
                    onesRowi[i] += 1;
                } else {
                    zerosColj[j] += 1;
                    zerosRowi[i] += 1;
                }
            }
        }
        int[][] res = new int[grid.length][grid[0].length];
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[0].length; j++) {
//                    onesRowi + onesColj - zerosRowi - zerosColj
                res[i][j] = onesRowi[i] + onesColj[j] - zerosRowi[i] - zerosColj[j];
            }
        }
        return res;
    }
}

3.结束

image.png

前三题太简单,第四题太难,真是无语,好歹手速快还是能涨个20大几分。