https://leetcode.com/problems/moving-stones-until-consecutive/

题意:给定3个点,每次从两个端点(位置最小或位置最大)中挑选一个点进行移动,将其移动到原先两个端点之间的空位置上,直到3个点位置连续,问最少多少步,和最多多少步。

思路:

对于(x,y,z),x<y<z:

最多步数:

固定一端,一直选择另一端的端点移动。具体地,固定右端点,一直选择左端点进行移动,每次将左端点移动至最左边的空位置上(greedy),每一步这样的操作,消耗[x,y]区间中的一个空位置,直至用掉所有空位置;或者说每一次操作后,最新的[x1,y1]相对[x,y]长度减1,一直减到xn+2==yn。

故,最多的步数为,z-x-2。

最少步数:

若x+1=y,y+1=z,则需0步;

若y-x<=2或者z-y<=2,则需1步;

否则,需2步。

class Solution
{
public:
vector<int> numMovesStones(int a, int b, int c)
{
if(a>b)
swap(a,b);
if(a>c)
swap(a,c);
if(b>c)
swap(b,c);
//cout<<a<<" "<<b<<" "<<c<<endl;
if(a+==b && b+==c)
return vector<int>{,};
int lowerbound=, upperbound=c-a-;
if(b-a<=||c-b<=)
lowerbound=;
else
lowerbound=;
//cout<<lowerbound<<" "<<upperbound<<endl;
return vector<int>{lowerbound,upperbound};
}
};

leetcode_1033. Moving Stones Until Consecutive的更多相关文章

  1. 【Leetcode_easy】1033. Moving Stones Until Consecutive

    problem 1033. Moving Stones Until Consecutive 参考 1. Leetcode_easy_1033. Moving Stones Until Consecut ...

  2. [Swift]LeetCode1033. 移动石子直到连续 | Moving Stones Until Consecutive

    Three stones are on a number line at positions a, b, and c. Each turn, let's say the stones are curr ...

  3. 【leetcode】1033. Moving Stones Until Consecutive

    题目如下: Three stones are on a number line at positions a, b, and c. Each turn, you pick up a stone at ...

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

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 脑筋急转弯 日期 题目地址:https://leet ...

  5. 滑动窗口-Moving Stones Until Consecutive II

    2020-02-20 16:34:16 问题描述: 问题求解: public int[] numMovesStonesII(int[] stones) { int n = stones.length; ...

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

    这是小川的第386次更新,第414篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第247题(顺位题号是1033).在a,b和c位置的数字线上有三块石头.每次,你在一个终点 ...

  7. Swift LeetCode 目录 | Catalog

    请点击页面左上角 -> Fork me on Github 或直接访问本项目Github地址:LeetCode Solution by Swift    说明:题目中含有$符号则为付费题目. 如 ...

  8. 算法与数据结构基础 - 数组(Array)

    数组基础 数组是最基础的数据结构,特点是O(1)时间读取任意下标元素,经常应用于排序(Sort).双指针(Two Pointers).二分查找(Binary Search).动态规划(DP)等算法.顺 ...

  9. Leetcode 第135场周赛解题报告

    这周比赛的题目很有特点.几道题都需要找到一定的技巧才能巧妙解决,和以往靠数据结构的题目不太一样. 就是如果懂原理,代码会很简单,如果暴力做,也能做出来,但是十分容易出错. 第四题还挺难想的,想了好久才 ...

随机推荐

  1. setInterval和setTImeout中的this指向问题

    问题:在setInterval和setTimeout中传入函数时,函数中的this会指向window对象 解决方法: 1. 将当前对象的this存为一个变量,定时器内的函数利用闭包来访问这个变量.va ...

  2. 萌新java入门笔记

    首先声明以下内容只是散乱笔记,如果有误还望大侠指出!不胜感激! 基本数据类型: 大体和C语言类似: boolean truth = true;//逻辑型 //文字型 char c; String st ...

  3. Lightoj1013【DP_LCS】

    题意: 给你两个字符串,让你求一个最短字符串,其中存在给出串的种类: 求这个字符串的长度和种类: 思路: //dp[i,j,k]表示前i个字符,包含s1串前j个字母,包含s2串前k个字符时的方案数. ...

  4. unity语言本地化插件 I2 Location2.5.6使用简单记录

    插件下载地址: http://download.csdn.net/detail/onafioo/9579937 1 将插件Resources下的I2Languages.prefab拖到工程里 2 新建 ...

  5. U3D开发性能优化笔记(待增加版本.x)

    http://blog.csdn.net/kaitiren/article/details/45071997 此总结由自己经验及网上收集整理优化内容 包括: .代码方面: .函数使用方面: .ui注意 ...

  6. Unity3D游戏开发之Unity与Android交互调用研究

    各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...

  7. [Xcode 实际操作]八、网络与多线程-(3)使用UIApplication对象拨打电话

    目录:[Swift]Xcode实际操作 本文将演示如何使用应用程序单例对象,拨打电话的功能. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 注:需要使用真机进行测 ...

  8. 第三章 “我要点爆”微信小程序云开发之点爆方式页面和爆炸之音页面制作

    点爆方式选择页面制作 在app.json中配置页面路径增加selectbao点爆方式选择,编译创建页面文件,点爆方式选择页面通过单选按钮组选择跳转到相应的点爆页面. <view class=&q ...

  9. IDE工具、文本编辑器的列块编辑模式

    前言 有时候需要对若干列进行一样的操作,比如在前一百行数据的最前边加上一样的字符,这时候可以通过列块编辑模式来快捷地实现这个效果.在列块编辑模式下,被选定的区域内的所有字符会被替换成你之后输入的字符. ...

  10. 测试 | 单元测试工具 | JUnit | 参数化

    被测试类: package project; public class MyCalendar2 { public int getNumberOfDaysInMonth(int year, int mo ...