LeetCode.1033-移动石头直到连续(Moving Stones Until Consecutive)

Dify整合FireCrawl与百度搜索实战:手把手教你打造全能研究助手 本文手把手教你基于Dify平台,整合FireCrawl网页爬虫与百度搜索能力,构建一个能同时处理本地文档与实时网络信息的全能研究助手。通过部署核心环境、配置模型、接入两大工具并设计自动化工作流,实现从问题提出到深度分析报告生成的一站式解决方案,极大提升信息调研与整合效率。 阅读详情

这是小川的第386次更新,第414篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第247题(顺位题号是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移动到3,或将石头从5移动到4到3。

输入:a = 4,b = 3,c = 2
输出:[0,0]
说明:不能做任何移动。

输入:a = 3,b = 5,c = 1
输出:[1,2]
说明:将石头从1移动到4;或将石头从1移动到2到4。

注意:

  • 1 <= a <= 100

  • 1 <= b <= 100

  • 1 <= c <= 100

  • a != b,b != c,c != a

02 解题

先将三个数排序,找出最小值min,中间值mid,最大值max。

最小移动步数:既然要移动的步数最少,那就跳着移动,向中间值mid靠拢。

如果三个数都相邻,那么就不需要跳。

如果其中有两个数相邻,即最小值和中间值相邻,或者中间值和最大值相邻,那么就只需要跳一步即可。

如果三个数不相邻,分两种情况:

  • 第一,如果最大值与中间值相差2,那么只需要跳一步,将最小值跳到最大值与中间值之间即可;如果中间值与最小值相差2,那么只需要跳一步,将最大值跳到中间值与最小值之间即可。

  • 第二,任意两数的差值大于2,那就往中间数左右两边相邻的数字上跳,左右两边各跳一次即可。

最多移动步数:既然要移动的步数最多,那就一次只移动一次,向中间值mid靠拢。

最大值max向左移动,移动到mid+1的位置,一共移动了max-mid-1步。

最小值min向右移动,移动到mid-1的位置,一共移动了mid-min-1步。

因此,最多移动步数为(max-mid-1)+(mid-min-1) = max - min - 2。

public int[] numMovesStones(int a, int b, int c) {
    int max = Math.max(a, Math.max(b, c));
    int min = Math.min(a, Math.min(b, c));
    int mid = a + b + c - max - min;
    int min_moves = Math.min(1, mid-min-1) + 
            Math.min(1, max-mid-1);
    if (mid-min == 2 || max-mid == 2) {
        min_moves = 1;
    }
    int max_moves = max - min - 2;
    return new int[]{min_moves, max_moves};
}

03 小结

算法专题目前已连续日更超过七个月,算法题文章253+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

龙腾CMS downloadFile接口任意文件读取漏洞复现 [附POC] 大连网龙网络科技有限公司专注于在信息科技领域中向客户提供商业解决方案,是专业的互联网服务解决方案提供商和网络营销服务专家,为用户提供一体化的网络营销整体解决方案,龙腾CMS downloadFile接口存在任意文件读取漏洞。 阅读详情

相关推荐

PSINS工具箱15状态组合导航仿真程序(test_SINS_GPS_153)浅析-卡尔曼滤波设置+导航解算

文章目录test_SINS_GPS_153源码poserrsetkfinitgabiaskfupdate流程 test_SINS_GPS_153源码 poserrset function poserr = poserrset(dpos0, dlon, dhgt) % position errors dpos=[dlat;dlon;dhgt] setting. % % Prototype: poserr = poserrset(dpos0) % Input: dpos0=[dlat; dlon; dhgt],

十八与她的博客 2162

Leetcode.1033 移动石子直到连续

解释:将石子从 5 移动到 4 再移动到 3,或者我们可以直接将石子移动到 3。),并将其放入两端之间的任一空闲位置。形式上,假设这三枚石子当前分别位于位置。要使游戏结束,你可以执行的最小和最大移动次数分别是多少?当你无法进行任何移动时,即,这些石子的位置连续时,游戏结束。拿起一枚石子,并将该石子移动到某一整数位置。输入:a = 1, b = 2, c = 5。输入:a = 4, b = 3, c = 2。三枚石子放置在数轴上,位置分别为。解释:我们无法进行任何移动。按从小到大的顺序排序。

感觉画质不如...原神的博客 799

ROS自定义地图实战:从CAD到导航的完整流程

本文详细介绍了如何将CAD图纸或手绘草图高效转换为ROS机器人可直接使用的导航地图。通过解析PGM与YAML标准格式,提供从图像处理、尺度校准到集成AMCL与move_base导航栈的完整实战流程,帮助开发者跳过繁琐的SLAM建图,实现快速、精准的自定义地图部署。

weixin_29083475的博客 497

Leetcode 1033:移动石子直到连续(超详细的解法!!!)

三枚石子放置在数轴上,位置分别为 a,b,c。 每一回合,我们假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。从位置 x 或者是位置 z 拿起一枚石子,并将该石子移动到某一整数位置 k 处,其中 x < k < z 且 k != y。 当你无法进行任何移动时,即,这些石子的位置连续时,游戏结束。 要使游戏结束,你可以执行的最小和最大移动次数分别是多少...

coordinate的博客 2103

burpsuite抓取ios数据包

1:首先在burpsuite中设置 添加proxy listeners 2:电脑开热点,手机连接,把代理设为电脑的ip和代理的端口 3:在Safari浏览器中打开网址http://burp下载证书 4:打开设置->通用->描述文件与设备管理 5:设置->通用->关于本机->证书信任设置 之后就可以正常抓包了 ...

weixin_45682070的博客 2068

STK轨道仿真环境搭建实战:从地月系到多天体场景

本文详细介绍了STK轨道仿真环境搭建的实战指南,从基础的地月系统到复杂的多天体场景。通过逐步操作说明和实用技巧,帮助用户快速掌握STK软件的使用方法,提升轨道仿真效率,适用于航天任务设计和教学演示。

weixin_30312563的博客 399

leetcode 算法题1033 (简单274) 移动石子直到连续

leetcode 算法题1033 (简单274) 移动石子直到连续 题目介绍 三枚石子放置在数轴上,位置分别为 a,b,c。 每一回合,我们假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。 从位置 x 或者是位置 z 拿起一枚石子, 并将该石子移动到某一整数位置 k 处, 其中 x < k < z 且 k != y。 当你无法进行任何移动时,即,...

FYuu95100的博客 504

【智能流体力学】使用ANSYS Fluent + SpaceClaim + SCDM制作流体力学前处理的几何模型

生成来源.scdoc文件来自前处理工具生成的模型数据,或在 FLUENT 中创建和保存的模型。生成方式: 通过前处理工具导出网格数据,或在 FLUENT 中设置并保存模型。作用: 用于储存模型的结构信息和设置,确保在 FLUENT 中的正确导入和使用。.x_t文件是 Parasolid 文件格式的扩展名,用于存储三维模型数据。在 ANSYS Fluent 中,这种格式通常用于在前处理工具之间交换几何数据。要创建.x_t。

源代码杀手的博客 3265

leetcode(1033) 移动石子直到连续

方法一: 最大值:x与z每次移动一格,移动到与y相邻。 为(z-y-1)+(y-x-1)=z-x-2; 最小值:只能为0,1,2 0:x,y,z相邻 1:三者中两者相邻 或 三者中两者间距为1 2:其余为2(操作方法:x到y-1,z到y+1) class Solution { public: vector<int> numMovesStones(int a, int b...

Knight的博客 301

基于STM32设计的万能红外遥控器(学习型)

当前介绍了一种基于STM32微控制器设计的红外遥控器,支持接收解码功能和发送功能,可以将接收的码原样发送出去。 红外遥控器作为智能设备控制方式之一,在一定程度上满足了人们对于快速方便控制的需求。 当前设计的红外遥控器支持学习模式和发送模式。通过矩阵键盘上的数字键选择发送对应的控制码。 一共支持学习10个控制码,对应矩阵键盘上的数字。0~9。

6559

华为OD机试双机位C卷-流水线(Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 流水线,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 流水线。

qq_45776114的博客 2268

【LeetCode】1033. Moving Stones Until Consecutive 解题报告(C++)

作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录题目描述题目大意解题方法脑筋急转弯日期 题目地址:https://leetcode.com/problems/moving-stones-until-consecutive/ 题目描述 Three stones are on a number line at positions a...

负雪明烛 1034

制作3D地形图的方法-使用GlobalMapper和3ds Max软件

打开GlobalMapper软件,在菜单栏中选择“文件”>“打开数据文件”,然后选择相应的高程数据文件。在菜单栏中选择“渲染”>“渲染设置”,根据需要进行设置,如分辨率和输出格式。选择地形对象,点击菜单栏中的“渲染”>“材质编辑器”,然后根据需要调整材质属性,如颜色、纹理和光照等。在菜单栏中选择“工具”>“高程栅格和网格”>“创建地形网格”。在菜单栏中选择“文件”>“导出”>“导出栅格格式”。打开3ds Max软件,在菜单栏中选择“文件”>“导入”,然后选择之前导出的地形数据文件。步骤3:导出地形网格。

JqlScala的博客 1536

leetcode 1033. Moving Stones Until Consecutive 解法 python

一.问题描述 Three stones are on a number line at positionsa,b, andc. Each turn, let's say the stones are currently at positionsx, y, zwithx < y < z. You pick up the stone at either position...

CSerwangjun的博客 1165

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LeetCode 1033:移动石子直到连续(Moving Stones Until Consecutive)解法汇总

文章目录 更多LeetCode题解 这题没有太多好说的,直接上代码 class Solution { public: vector<int> numMovesStones(int a, int b, int c) { vector<int> nums = { a,b,c }; sort(nums.begin(), nums.end()); vector<...

Utopiabuntu的博客 450

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【leetcode】1033. Moving Stones Until Consecutive

题目如下: Three stones are on a number line at positionsa,b, andc. Each turn, you pick up a stone at an endpoint (ie., either the lowest or highest position stone), and move it to an unoccupied pos...

weixin_33744854的博客 173

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LeetCode1033. Moving Stones Until Consecutive(java)

Three stones are on a number line at positions a, b, and c. Each turn, you pick up a stone at an endpoint (ie., either the lowest or highest position stone), and move it to an unoccupied position betw...

katrina95的博客 303

leetcode 1033. Moving Stones Until Consecutive

题目 挺无聊的一道题,因为最大步数就是两边的石头一步步的走就行。最小的步数分情况,三个都挨着的为0;其中两者挨着另外一个不挨着,或者其中两者中间有一个空的位置,都为1;剩下的就是距离远的,2步也能解决。 class Solution { public int[] numMovesStones(int a, int b, int c) { int[] A = new int[...

xiaobailaji的博客 190

【Leetcode】1033. Moving Stones Until Consecutive

class Solution(object): def numMovesStones(self, a, b, c): """ the max is easy to get, the max equals to the farthest minus the nearest minus 2 for the case min, there ar...

很吵请安静 606

[LeetCode Python3] 1033. Moving Stones Until Consecutive

Python3 solution: 画图分析一下 class Solution: def numMovesStones(self, a: int, b: int, c: int) -> List[int]: a, b, c = sorted([a, b, c]) maxmove = c-a-2 if a+1 == b and b+1 == c: return [0, 0] if b-a == 1 or c-

xvrixingkong的博客 102

LeetCode 1033. 移动石子直到连续(C++)

三枚石子放置在数轴上,位置分别为a,b,c。 每一回合,我们假设这三枚石子当前分别位于位置x, y, z且x < y < z。从位置x或者是位置z拿起一枚石子,并将该石子移动到某一整数位置k处,其中x < k < z且k != y。 当你无法进行任何移动时,即,这些石子的位置连续时,游戏结束。 要使游戏结束,你可以执行的最小和最大移动次数分别...

qq_27060423的博客 537

一、移动石子直到连续(Weekly Contest 134)

显示英文描述 用户通过次数 353 用户尝试次数 418 通过次数 359 提交次数 1357 题目难度 Easy 三枚石子放置在数轴上,位置分别为 a,b,c。 每一回合,我们假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。从位置 x 或者是位置 z 拿起一枚石子,并将该石子移动到某一整数位置 k 处,其中 x < k < z 且 k != y。 ...

qq_34446716的博客 477

[数学]leetcode1033:移动石子直到连续(easy)

题目: 题解:(原谅我本人语文水平有限,这题读懂花了很长时间(哭唧唧) 本题的大意:将a、b、c中a和c移动到与b相差一位的最小次数和最大次数,也就是是a、b、c这三个数相差为1的最小次数和最大次数。 每次只能移动最左侧,或者最右侧的石子往中间移动。所以z-x的值是逐渐收敛的 最大步数:最大次数就是一步一步往中间挪,所需的步数是z-x-2。因为c和a之间能移动的空间是z-x-1,还要去掉一个...

algsup 674

leetcode 1033 移动石子直到连续

主要是需要搞清楚移动的方式,接下来就很简单了。 ### 题目 三枚石子放置在数轴上,位置分别为 a,b,c。 每一回合,我们假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。从位置 x 或者是位置 z 拿起一枚石子,并将该石子移动到某一整数位置 k 处,其中 x < k < z 且 k != y。 当你无法进行任何移动时,即,这些石子的位置连续时,游...

m0_38071863的博客 956

1033. 移动石子直到连续

题目 三枚石子放置在数轴上,位置分别为 a,b,c。 每一回合,我们假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。从位置 x 或者是位置 z 拿起一枚石子,并将该石子移动到某一整数位置 k 处,其中 x < k < z 且 k != y。 当你无法进行任何移动时,即,这些石子的位置连续时,游戏结束。 要使游戏结束,你可以执行的最小和最大移动次数分别...

u012861792的博客 325
上一篇: 一文弄懂计数排序算法!
下一篇: LeetCode.1037-有效的回旋镖(Valid Boomerang)
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值