​力扣解法汇总1033. 移动石子直到连续

news/2024/7/7 22:01:20

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

三枚石子放置在数轴上,位置分别为 abc

每一回合,你可以从两端之一拿起一枚石子(位置最大或最小),并将其放入两端之间的任一空闲位置。形式上,假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。那么就可以从位置 x 或者是位置 z 拿起一枚石子,并将该石子移动到某一整数位置 k 处,其中 x < k < z 且 k != 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. 1 <= a <= 100
  2. 1 <= b <= 100
  3. 1 <= c <= 100
  4. a != b, b != c, c != a

解题思路:

* 解题思路:
* 按照从小到大,排列a,b,c。
* 首先abc如果相邻,则直接返回0;
* 其次求minimum_moves,如果a,b,c两者相邻或者间隔为1,则minimum_moves=1,否则minimum_moves=2;
* 最后求最大值,因为每次挪动的都是最外侧的,所以其实b的位置就不重要了。
* maximum_moves = c-a-1-1,第一个1代表跳过b的位置,第二个1代表距离a相差1。

代码:

public class Solution1033 {

    public int[] numMovesStones(int a, int b, int c) {
        int[] ints = {a, b, c};
        Arrays.sort(ints);
        a = ints[0];
        b = ints[1];
        c = ints[2];
        if (c - b == 1 && b - a == 1) {
            return new int[]{0, 0};
        }
        int minimum_moves;
        if (Math.abs(a - b) == 1 || Math.abs(a - b) == 2 || Math.abs(c - b) == 1 || Math.abs(c - b) == 2) {
            minimum_moves = 1;
        } else {
            minimum_moves = 2;
        }
        int maximum_moves = (c - a - 1) - 1;
        return new int[]{minimum_moves, maximum_moves};
    }

}


http://lihuaxi.xjx100.cn/news/1092374.html

相关文章

在win11搭建ubuntu目标机器的QT开发环境的实践

环境&#xff1a; 笔记本电脑 16G内存 win11 尝试wsl的方案&#xff1a; wsl2 ubuntu gnome xrdp wsl安装ubuntu并设置gnome图形界面详细步骤&#xff08;win11ubuntu18&#xff09;_heusjh的博客-CSDN博客 wsl2 ubuntu gnome VcXsrv Windows中WSL2 配置运行GNOM…

Centos7快速安装Elasticsearch 7.17.7

从 Elasticsearch 7.x 版本开始&#xff0c;Elasticsearch 发行版包括了自己的 JDK。因此&#xff0c;您不需要单独安装 Java。以下是在 CentOS 7 上安装 Elasticsearch 7.17.7 的完整步骤&#xff1a;&#xff08;数据默认保存在/var/lib/elasticsearch下&#xff0c;自行更改…

Django概述

Django Demo 入门 前言 本文档旨在从入门到入土的整理Django的学习路线&#xff0c;以提供于其他人进行学习。 本文档参考了Django官方技术文档进行编写。Django版本应为4.2版本。 Django 概览 因为 Django 是在快节奏的新闻编辑室环境中开发的&#xff0c;所以它旨在使常见的…

[AION]我眼中的《永恒之塔私服》

当我第一次看到《永恒之塔私服》我被它那华丽的画面吸引了。      三维做的很逼真&#xff0c;他的三维技术&#xff0c;华丽的三维景象&#xff0c;从maya设计者专业的角度上说&#xff0c;他是一部做工完美的游戏&#xff0c;不管是他的背景还是他的人物。都比以前很多游…

学会这些常用调试技巧,让你的C/C++代码调试起来如虎添翼

本篇博客主要讲解程序员最应该掌握的技能之一——调试。我个人认为&#xff0c;学习编程&#xff0c;有2件事情非常重要&#xff0c;一是画图&#xff0c;一是调试。下面我会以Visual Studio 2022为例&#xff08;VS的其他版本大同小异&#xff09;&#xff0c;演示如何调试一个…

C语言的那些少见的事1

目录 前言&#xff1a; 1.变量名称的意义 2.卖函数库的知识 3.变长数组 4.清空输入缓冲区 5.左值和右值 6.for控制语句中定义变量 7.刷题中浮点数的精度问题 8.C语言提供C的标准和C库的约定 9.extern声明外部符号 ❤博主CSDN:啊苏要学习 ▶专栏分类&#xff1a;C语言…

微机作业题

答案做的&#xff0c;正确性不保证。 1. 微型计算机的性能主要取决&#xff08; A &#xff09;的性能。 A. CPU B. 显示器 C. 硬盘 D. U盘 2. 计算机的工作过程&#xff0c;本质是&#xff08; A &#xff09;的过程。 A. 进行科学计算 …

为什么越来越多的企业选择云计算?—分析云计算的优势和未来发展趋势

文章目录 一、什么是云计算&#xff1f;二、为什么越来越多的企业选择云计算&#xff1f;三、云计算的优势和未来发展趋势3.1 云计算的优势3.2 未来发展趋势 一、什么是云计算&#xff1f; 云计算是一种基于互联网的计算模式&#xff0c;它可以通过网络等远程渠道&#xff0c;…