当前位置: 首页 > 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};}
};

相关文章:

Leetcode.1033 移动石子直到连续

题目链接 Leetcode.1033 移动石子直到连续 Rating &#xff1a; 1421 题目描述 三枚石子放置在数轴上&#xff0c;位置分别为 a&#xff0c;b&#xff0c;c。 每一回合&#xff0c;你可以从两端之一拿起一枚石子&#xff08;位置最大或最小&#xff09;&#xff0c;并将其放入…...

【Java】在SpringBoot中使用事务注解(@Transactional)时需要注意的点

在SpringBoot中使用事务注解&#xff08;Transactional&#xff09;时需要注意的点Transactional是什么使用事务注解&#xff08;Transactional&#xff09;时需要注意的点Transactional是什么 Transactional是Spring框架提供的一个注解&#xff0c;用于声明事务边界和配置事务…...

找到序列最高位的1和最高位的0并输出位置

前言&#xff1a; 该题为睿思芯科笔试题&#xff0c;笔试时长20分钟。 题目描述 接口如下&#xff1a; module first_1_and_0#(parameter WIDTH 8 )(input [WIDTH-1:0] data_in ,input target ,output exist ,outpu…...

面试总结sdiugiho

一、进程与线程的区别 进程&#xff1a; 一个在内存中运行的应用程序&#xff0c;每个进程都有自己独立的一块内存空间&#xff0c;一个进程可以有多个线程&#xff1b; windows 任务管理器中 一个 exe 就是一个进程。 线程&#xff1a; 进程中的一个执行任务&#xff08;控制…...

WIN10無法再使用 IE 瀏覽器打开网页解决办法

修改 Registry&#xff08;只適用 Win10&#xff09; 微軟已於 2023 年 2 月 14 日永久停用 Internet Explorer&#xff0c;會透過 Edge 的更新讓使用者開啟 IE 時自動導向 Edge&#xff0c;其餘如工作列上的圖示&#xff0c;使用的方法則是透過「品質更新」的 B 更新來達成&am…...

搭建SpringBoot和Mysql Demo

1. 引言 在上一篇文章中&#xff0c;介绍了如何搭建一个SpringBoot项目&#xff1b;本篇文章&#xff0c;在上一篇文章的基础上&#xff0c;接着介绍下怎样实现SpringBoot和MySQL的整合。在后端开发中&#xff0c;数据库开发是绕不开的话题&#xff0c;开发中很多的时间都是在…...

晶振03——晶振烧坏的原因

晶振03——晶振烧坏的原因 首先要清楚的一件事情是&#xff1a;晶振分为无源晶振与有源晶振两大类。基于这两类晶振的内部结构与工作原理的差异&#xff0c;晶振被烧坏的情况也要分为两大类&#xff1a; 针对无源晶振被烧坏的情况有以下两点&#xff1a; 1、手焊操作不当 假…...

项目管理的难点

一、项目团队建设 建设一支高效的项目团队&#xff0c;明确团队队员的职责是项目经理进行项目管理的首要条件&#xff0c;也是项目目标能否实现的关键。 1.1 学会放权 任何人都不能掌握所有的知识和技能&#xff0c;要敢于相信别人&#xff0c;让别人去做。 放权就要选择最…...

day22 ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点

问题&#xff1a; ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点 首先&#xff0c;二叉搜索树是一种常见的数据结构&#xff0c;它具有以下特点&#xff1a; 每个节点最多有两个子节点&#xff0c;分别为左子节点和右子节…...

ChatGPT 这个风口,普通人怎么抓住?

最近在测试ChatGPT不同领域的变现玩法&#xff0c;有一些已经初见成效&#xff0c;接下来会慢慢分享出来。 今天先给大家分享一个&#xff0c;看完就能直接上手的暴力引流玩法。 所需工具&#xff1a; 1&#xff09;ChatGPT&#xff08;最好是plus版&#xff0c;需要保证快速…...

Python代码规范:企业级代码静态扫描-代码规范、逻辑、语法、安全检查,以及代码规范自动编排(2)

本篇将总结实际项目开发中Python代码规范检查、自动编排的一些工具&#xff0c;特点&#xff0c;使用方法&#xff0c;以及如何在Pycharm中集成这些工具&#xff0c;如autoflake、yapf、black、isort、autopep8代码规范和自动编排工具。上一篇总结的pylint、pyproject-flake8、…...

acme.sh从 letsencrypt 生成SSL免费证书并自动更新证书

acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书 ACME 协议: Automatic Certificate Management Environment 自动化证书管理环境 文档: github: https://github.com/acmesh-official/acme.shgitee: https://gitee.com/neilpang/acme.sh中文文档: https://git…...

基于html+css的evenly布局

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…...

【从零开始学习 UVM】10.5、UVM TLM —— UVM TLM Blocking Get Port

文章目录 UVM TLM Get Port Example1. 创建一个发送方类,其端口类型为 uvm_blocking_get_imp3. 创建接收器类,等待 get 方法。4. 在更高层次上连接端口及其实现Get端口阻塞行为任何组件都可以通过 TLM get 端口请求从另一个组件接收事务。发送组件应定义获取端口的实现。该实…...

English Learning - L2 第 10 次小组纠音 辅音 [m] [n] [ŋ] 半元音 [w] [j] 2023.3.29 周三

English Learning - L2 第 10 次小组纠音 辅音 [m] [n] [ŋ] [w] [j] 2023.3.29 周三共性问题more Autumn [ɔː] 舌位偏前gone evening 前后鼻音不分Hes proud of this name 双元音缺乏滑动感bank thing 中的后鼻音发成前鼻音week what yolk 元音 [iː] [ɒ] 舌位偏前 [əʊ] …...

从零开始实现一个C++高性能服务器框架----环境变量模块

此项目是根据sylar框架实现&#xff0c;是从零开始重写sylar&#xff0c;也是对sylar丰富与完善 项目地址&#xff1a;https://gitee.com/lzhiqiang1999/server-framework 简介 项目介绍&#xff1a;实现了一个基于协程的服务器框架&#xff0c;支持多线程、多协程协同调度&am…...

git常用命令的解释

解释git add . git add . 命令用于将当前目录下的所有文件添加到 Git 仓库的暂存区中。这个命令通常用于刚刚打开一个 Git 仓库时&#xff0c;或者用于将本地文件更新到远程仓库时。 具体来说&#xff0c;git add . 命令会将当前目录下的所有文件添加到 Git 仓库的暂存区中&am…...

DNS和CDN的区别与联系

现在互联网用户很多不能理解CDN和DNS之间的关系&#xff0c;他们之间到底有什么区别。对于这两者永远处于模糊的概念。其实二者是相辅相成的&#xff0c;二者搭配起来能使网站更加安全&#xff0c;快速。 用户访问未使用CDN缓存网站的过程为: 1、用户向浏览器提供要访问的域名…...

Java基础知识 | 常见面试题(中):面向对象基础

撰写成一问一答的形式&#xff0c;每次回答都默写&#xff0c;对比参考答案后&#xff0c;再默写出更恰当的答案。 相关内容 Java基础知识 | 常见面试题&#xff08;上&#xff09;&#xff1a;基础概念和常识 Java基础知识 | 常见面试题&#xff08;上&#xff09;&#xff1a…...

勒索软件正在从 Windows 转向 Linux

听说勒索软件正在从 Windows 转向 Linux了勒索软件正在从 Windows 转向 Linux 最近几周&#xff0c;黑客们一直在对 Linux 企业网络部署 IceFire 勒索软件&#xff0c;这是一个值得注意的转变&#xff0c;因为它曾经是一个只针对 Windows 的恶意软件。与 Windows 相比&#xf…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...