目录
公交站间的距离
https://leetcode.cn/problems/distance-between-bus-stops/
环形公交路线上有
n
个站,按次序从0
到n - 1
进行编号。我们已知每一对相邻公交站之间的距离,distance[i]
表示编号为i
的车站和编号为(i + 1) % n
的车站之间的距离。环线上的公交车都可以按顺时针和逆时针的方向行驶。
返回乘客从出发点
start
到目的地destination
之间的最短距离。解题思路:
参考上一章的模拟题:小美走公路
代码需要略微调整
class Solution {
public int distanceBetweenBusStops(int[] distance, int start, int destination) {
int clockwiseDistance = 0; // 顺时针方向的距离
int counterClockwiseDistance = 0; // 逆时针方向的距离
// 计算顺时针距离
// 注意i = (i + 1) % n,表示任何一个数取余n,都是<n的,也就是说i不会越界
for (int i = start; i != destination; i = (i + 1) % distance.length) {
clockwiseDistance += distance[i];
}
// 计算逆时针距离
for (int i = destination; i != start; i = (i + 1) % distance.length) {
counterClockwiseDistance += distance[i];
}
// 输出最短距离
return Math.min(clockwiseDistance, counterClockwiseDistance);
}
}
生命游戏
根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。
给定一个包含
m × n
个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1
即为 活细胞 (live),或0
即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:
- 如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;
- 如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;
- 如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡;
- 如果死细胞周围正好有三个活细胞,则该位置死细胞复活;
下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你
m x n
网格面板board
的当前状态,返回下一个状态。