开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情
前言
小白算法比较菜,希望能激励我每日更新,从leetcode第一题开始,2022年目标1900分,现在1806!!
力扣第 92 场双周赛-力扣
第 92 场双周赛 - 力扣(LeetCode)
前三题都不咋难,第四题没做出来,,一直超时,确实有点难。
周日打周赛的人都不多了,周六的双周赛更少了。
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
输入: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.结束
前三题太简单,第四题太难,真是无语,好歹手速快还是能涨个20大几分。