LeetCode-1033. 移动石子直到连续

题目描述 移动石子直到连续

三枚石子放置在数轴上,位置分别为 a,b,c。

每一回合,我们假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。从位置 x 或者是位置 z 拿起一枚石子,并将该石子移动到某一整数位置 k 处,其中 x < k < z 且 k != y。

当你无法进行任何移动时,即,这些石子的位置连续时,游戏结束。

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

示例

输入:a = 1, b = 2, c = 5
输出:[1, 2]
解释:将石子从 5 移动到 4 再移动到 3,或者我们可以直接将石子移动到 3。

1 <= a <= 100
1 <= b <= 100
1 <= c <= 100
a != b, b != c, c != a

解题思路

  • 要注意的是a,b,c一开始没有排序,所以应该先对abc排序
  • 然后就很简单了啊,判断就好了
  • 注意的就是如果ab或者cb的差等于2,那么最少次数为1

代码

class Solution {
public:
    vector<int> numMovesStones(int a, int b, int c) {
        if(a>b) swap(a, b);
        if(b>c) swap(b, c);
        if(a>b) swap(a, b);
        vector<int> res;
        int min_num=0;
        int max_num=0;
        if(b-a>1){
            min_num += 1;
            max_num += b - a - 1;
        }
        if(c-b>1){
            min_num += 1;
            max_num += c - b - 1;
        }
        if(b-a==2||c-b==2) min_num = 1;
        res.push_back(min_num);
        res.push_back(max_num);
        return res;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 4,146评论 0 2
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 10,958评论 0 13
  • 更多精彩内容,请关注【力扣简单题】。 题目 难度:★★☆☆☆类型:数组,益智 三枚石子放置在数轴上,位置分别为 a...
    玖月晴阅读 476评论 0 0
  • 我的村子后面是一脉山,坡陡地贫多沙砾。 然而村里人多地少,能长植物的地方村民都恨不得开荒成耕地。那一脉鸟不拉屎的山...
    云问雨阅读 376评论 0 6
  • 不知道大家平时工作的状态是怎么样,我发现最近自己老喜欢把工作留到最后快没时间的时候才开始做,前面明明有大把的时间完...
    o左手写爱o阅读 677评论 0 4

友情链接更多精彩内容