0%

第304场周赛-897-4题(心态重要)

1659277621782

只记录一下对我而言比较有意义的题目

本期总结:#

  1. 永远保持冷静,不要激动,下次可以录屏,记录自己的心态和过程
  2. 图里有环的判断并不是走回自己,而是走到了重复走过的点

6132. 使数组中所有元素都等于零 - 力扣(LeetCode)

1659278338228

这题花了七分钟,不应该。

题目没看懂

**选出一个正整数 xx 需要小于或等于 nums 中 **最小的 非零 元素

又要求最少操作数,那么只能是每次选nums中的最小即可,这里想复杂了,以为是选某个区间范围内的数字。

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
public int minimumOperations(int[] nums) {
int result = 0;
for (int i = 0; i < nums.length;i++) {
int min = getMin(nums);
if (min == Integer.MAX_VALUE) {
return result;
}
for (int j = 0; j < nums.length;j++) {
if (nums[j] != 0) {
nums[j] -= min;
}
}
result++;
}
return result;
}

public int getMin(int[] nums) {
int min = Integer.MAX_VALUE;
for (int i = 0; i < nums.length;i++) {
if (nums[i] != 0) {
min = Math.min(nums[i], min);
}
}
return min;
}

6133. 分组的最大数量 - 力扣(LeetCode)

1659278765664

脑筋急转弯啊这是

跟grades根本没关系

直接排序后,每次取1个、2个、3个即可

拿就是看这样增加到什么时候为止结束

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public int maximumGroups(int[] grades) {
//Arrays.sort(grades);
int k = 0;
int len = grades.length;
while (len - (k+1) >= 0) {
len = len - (k+1);
k++;
}
return k;
}
}

6134. 找到离给定两个节点最近的节点 - 力扣(LeetCode)

1659278866526

这题思路其实也容易想:

先从node1一直往下遍历,直到遇到尽头或者环,记录每个点的距离

1
2
3
4
5
6
7
dis[node1] = 0;
int d = 1;
int node = edges[node1];
while (node != -1 && dis[node] == -1) {
dis[node] = d++;
node = edges[node];
}

然后node2也一直往下走,遇到node1走过的点(通过dis是否为-1判断)则计算最小值和要选择的点。同时也要判断环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
d = 0;
node = node2;
int select = 0;
int result = Integer.MAX_VALUE;
boolean[] vis = new boolean[edges.length];
while (node!=-1 && !vis[node]) {
if (dis[node] != -1) {
if (Math.max(d, dis[node]) < result) {
result = Math.max(d, dis[node]);
select = node;
}
}
d++;
vis[node] = true;
node = edges[node];

}

但是自己提前想漏了很多点

遗漏点1:环的判断并不是走回自己啊,而是走到了重复走过的点!

遗漏点2:要注意节点距离相同的情况,要选节点编号最小!

遗漏点3:冷静冷静,不要妄自生气,你及时没进200,也拿到了每日3题的积分了!

这种easy题做了40分钟还错了2次很不应该!

1659279307738

6135. 图中的最长环 - 力扣(LeetCode)

1659279326269

大放水,欸,知道每个点不需要重复走, 这个思路就能处理了

但是要注意 ”碰到自己走过的点即成环了“ 和”碰到别人走过的点,不用再走“是有区别的,不能一起判断

所以我用了一个root来判断

1659279449222