算法

1033. 移动石子直到连续

2023-05-01  本文已影响0人  红树_

路过人间几十年,尽力做自己能做的事,不白来这一趟。

LC每日一题,参考1033. 移动石子直到连续 - 力扣(Leetcode)

题目

要使游戏结束,你可以执行的最小和最大移动次数分别是多少? 以长度为 2 的数组形式返回答案:answer = [minimum_moves, maximum_moves]

示例 1:输入:a = 1, b = 2, c = 5
输出:[1, 2]
解释:将石子从 5 移动到 4 再移动到 3,或者我们可以直接将石子移动到 3。
示例 2:输入:a = 4, b = 3, c = 2
输出:[0, 0]
解释:我们无法进行任何移动。

解题思路

贪心

class Solution {
    public int[] numMovesStones(int a, int b, int c) {
        int[] stones = new int[]{a,b,c};
        Arrays.sort(stones);
        int min = 0;
        if(stones[2]-stones[1] == 1  && stones[1]-stones[0] == 1) min = 0;
        else if(stones[2]-stones[1] <= 2 || stones[1]-stones[0] <= 2) min = 1;
        else min = 2;
        return new int[]{min,stones[2]-stones[0]-2};
    }
}

复杂度分析

上一篇 下一篇

猜你喜欢

热点阅读