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. 【Hadoop】MapReduce笔记(一):MapReduce作业运行过程、任务执行

    一.MR作业运行过程 JobClient的runJob()方法:新建JobClient实例,并调用其submitJob()方法.提交作业后,runJob()每秒轮询作业进度,如果发现上次上报后信息有改 ...

  2. HTTP客户端代码片段

    代码片段: public HttpURLConnection connection = null; 设置connection属性 URL url = new URL(urlPath); connect ...

  3. win10+PHP 安装redis

    1.给php环境安装redis扩展 2.给电脑安装redis环境 一.为php安装redis服务 使用 phpinfo() 函数查看php对应的版本 二.去下面的两个网站下载对应版本的压缩包并解压(注 ...

  4. Lightoj 1082【RMQ】

    这里很low地写了个线段树... #include <bits/stdc++.h> using namespace std; typedef long long LL; const int ...

  5. Unity亚洲开发者大会会议简录之技术篇,Profiler的一些参数的意思

    2014Unity亚洲开发者大会会议简录之技术篇 拖公司的福,有幸去了一趟北京参加了一场Unity3D的交流盛宴,在为期两天的时间内,不仅有着技术上收获,也有心灵上的震撼.现在先来说说技术方面的一些比 ...

  6. JS实现购物车动态功能

    整理了一下当时学js写的一些案例,觉得购物车功能在一般网站比较常见且基础,现在把它整理出来,需要的小伙伴可以参考一下. 该案例购物车主要功能如下: 1. 商品单选.全选.反选功能 2. 商品添加.删除 ...

  7. TYVJ1424占卜DIY

    Description lyd学会了使用扑克DIY占卜.方法如下:一副去掉大小王的扑克共52张,打乱后均分为13堆,编号1~13,每堆4张,其中第13堆称作“生命牌”,也就是说你有4条命.这里边,4张 ...

  8. Codeforces Round #396 (Div. 2) E

    Mahmoud and Ehab live in a country with n cities numbered from 1 to n and connected by n - 1 undirec ...

  9. python之函数名,闭包、迭代器

    一.函数名的运用(第一类对象) 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量. 1,函数名的内存地址: def func(): print("呵呵") pr ...

  10. 命令行视频下载工具 you-get 和 youtube-dl

    you-get 和 youtube-dl 都是基于 Python 的命令行媒体文件下载工具,完全开源免费跨平台.用户只需使用简单命令并提供在线视频的网页地址即可让程序自动进行嗅探.下载.合并.命名和清 ...