当前位置: 首页 > news >正文

Leetcode.1033 移动石子直到连续

题目链接

Leetcode.1033 移动石子直到连续 Rating : 1421

题目描述

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

每一回合,你可以从两端之一拿起一枚石子(位置最大或最小),并将其放入两端之间的任一空闲位置。形式上,假设这三枚石子当前分别位于位置 x, y, zx<y<zx < y < zx<y<z。那么就可以从位置 x或者是位置 z拿起一枚石子,并将该石子移动到某一整数位置 k处,其中 x<k<zx < k < zx<k<zk≠yk \neq yk=y

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

要使游戏结束,你可以执行的最小和最大移动次数分别是多少? 以长度为 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]
解释:我们无法进行任何移动。

提示:

  • 1<=a<=1001 <= a <= 1001<=a<=100
  • 1<=b<=1001 <= b <= 1001<=b<=100
  • 1<=c<=1001 <= c <= 1001<=c<=100
  • a!=b,b!=c,c!=aa != b, b != c, c != aa!=b,b!=c,c!=a

解法:分类讨论

先将 a,b,ca,b,ca,b,c按从小到大的顺序排序。

最小值:

  • b−a=1b - a = 1ba=1 and c−a=1c - a = 1ca=1时,不需要移动,故答案为 0
  • b−a≤2b - a \leq 2ba2 or c−a≤2c - a \leq 2ca2时,需要移动一次,故答案为 1
  • 否则需要移动两次,故答案为 2

最大值:c−a−2c - a - 2ca2

时间复杂度:O(1)O(1)O(1)

C++代码:

class Solution {
public:vector<int> numMovesStones(int a, int b, int c) {vector<int> arr{a,b,c};sort(arr.begin(),arr.end());    int ans;if(arr[1] - arr[0] == 1 && arr[2] - arr[1] == 1) ans = 0;else if(arr[1] - arr[0] <= 2 || arr[2] - arr[1] <= 2) ans = 1;else ans = 2;return {ans,arr[2] - arr[0] - 2};}
};
http://www.lryc.cn/news/56157.html

相关文章:

  • 【Java】在SpringBoot中使用事务注解(@Transactional)时需要注意的点
  • 找到序列最高位的1和最高位的0并输出位置
  • 面试总结sdiugiho
  • WIN10無法再使用 IE 瀏覽器打开网页解决办法
  • 搭建SpringBoot和Mysql Demo
  • 晶振03——晶振烧坏的原因
  • 项目管理的难点
  • day22 ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点
  • ChatGPT 这个风口,普通人怎么抓住?
  • Python代码规范:企业级代码静态扫描-代码规范、逻辑、语法、安全检查,以及代码规范自动编排(2)
  • acme.sh从 letsencrypt 生成SSL免费证书并自动更新证书
  • 基于html+css的evenly布局
  • 【从零开始学习 UVM】10.5、UVM TLM —— UVM TLM Blocking Get Port
  • English Learning - L2 第 10 次小组纠音 辅音 [m] [n] [ŋ] 半元音 [w] [j] 2023.3.29 周三
  • 从零开始实现一个C++高性能服务器框架----环境变量模块
  • git常用命令的解释
  • DNS和CDN的区别与联系
  • Java基础知识 | 常见面试题(中):面向对象基础
  • 勒索软件正在从 Windows 转向 Linux
  • 信息系统项目管理师 第11章 项目成本管理
  • XML 简介
  • ERP:华为杀入,金蝶们打颤?
  • Linux——总复习1
  • 控制SQL*PLUS的环境和数据字典简介
  • Chapter11.3:MATLAB_SIMULINK在离散系统中的应用
  • 过滤器Filter
  • MySQL数据同步ES的常用思路和方法
  • spring源码之扫描前设置
  • C++ 98/03 应该学习哪些知识19
  • java毕业生就业信息管理系统servlet程序