【刷题宝典NO.4】

目录

公交站间的距离

生命游戏 


公交站间的距离

https://leetcode.cn/problems/distance-between-bus-stops/

环形公交路线上有 n 个站,按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离,distance[i] 表示编号为 i 的车站和编号为 (i + 1) % n 的车站之间的距离。

环线上的公交车都可以按顺时针和逆时针的方向行驶。

返回乘客从出发点 start 到目的地 destination 之间的最短距离。

aed815e1b1e2425f8f4078fb0efafe10.png

21f31e6c538e4cb182f029b1ee696f33.png

5af1657340cf4b64ba836607e07f55ac.png

解题思路:

参考上一章的模拟题:小美走公路

代码需要略微调整

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)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:

  1. 如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;
  2. 如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;
  3. 如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡;
  4. 如果死细胞周围正好有三个活细胞,则该位置死细胞复活;

下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你 m x n 网格面板 board 的当前状态,返回下一个状态。

31bb0f716aac481cb96424bda854ee32.png

c3b8d614b4504958abe0f52961621cc1.png

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TheMythWS

你的鼓励,我的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值